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

本文关键字:两个 集合 数据 包含相 何断言 断言 | 更新日期: 2023-09-27 18:20:07

我想用我期望的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 ()

我浏览了这篇文章。但我得到了另一个GroupOfStuff类,其中包含另一个List成员。所以,shell会对GroupOfStuff类的每个成员进行单独的断言,或者建议是什么,shell如何断言它们。

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

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

可以在Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll中找到,因为.net 4.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");
        }