如何断言包含相同数据的两个集合

时间:2015-11-02 10:47:35

标签: c# .net assertion

我想用预期的List断言结果List。我的预期列表如下面的代码

List<GroupOfStuff> expectedResult = new List<GroupOfStuff>();
List<Stuff> stuffList = new List<Stuff>();
Stuff stuff = new Stuff
{
    DeliveryDays = 3
};
stuffList.Add(stuff);
GroupOfStuff groupByCountry = new GroupOfStuff
{
    Country = "Australia",
    StuffDetails = stuffList // List<Stuff> type
};
expectedResult.Add(groupByCountry);

我的实际为List<GroupOfStuff> actual = obj.Result ()

我经历了this post。但我得到另一个GroupOfStuff类包含另一个List成员。所以,shell我会单独断言GroupOfStuff类的每个成员或者建议是什么,我如何断言它们。

2 个答案:

答案 0 :(得分:0)

我想这是单元测试?然后,您可以在microsoft.visualstudio.testtools.unittesting.collectionassert(https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.collectionassert.aspx)的命名空间中使用此CollectionAssert.AreEqual

您可以在.net 4.0中找到Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

答案 1 :(得分:0)

我认为你可以使用扩展方法Enumerable.SequenceEqual<TSource>()来达到这个目的。小例子如何使用它:

        class Pet
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

        public static void SequenceEqualEx1()
        {
            Pet pet1 = new Pet { Name = "Turbo", Age = 2 };
            Pet pet2 = new Pet { Name = "Peanut", Age = 8 };

            // Create two lists of pets.
            List<Pet> pets1 = new List<Pet> { pet1, pet2 };
            List<Pet> pets2 = new List<Pet> { pet1, pet2 };

            bool equal = pets1.SequenceEqual(pets2);

            Console.WriteLine(
                "The lists {0} equal.",
                equal ? "are" : "are not");
        }