Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 嵌套列表的CollectionAssert_C#_Unit Testing_Equality - Fatal编程技术网

C# 嵌套列表的CollectionAssert

C# 嵌套列表的CollectionAssert,c#,unit-testing,equality,C#,Unit Testing,Equality,如何断言嵌套列表,而不“取消”它 expected.Add(new Customer{ Edition = "Cust", Rarity = "R", ID = 1001, Name = "John Doe", Types = new List<Type_>{ new T

如何断言嵌套列表,而不“取消”它

        expected.Add(new Customer{
                Edition = "Cust",
                Rarity = "R",
                ID = 1001,
                Name = "John Doe",
                Types = new List<Type_>{
                    new Type_{
                        ID = 1,
                        Name = "abc"
                    }
                },

这当然排除了嵌套列表。

一些对我有用的东西:

  • 生成包含列表内容的对象哈希(如MD5),这是一种非常严格的方法,很少有用
  • 只需在测试中专门为该内部列表编写第二个断言。这是比较传统的方法(我最喜欢)
  • 编写一个新测试以仅断言内部列表。这是一种更纯粹的TDD方法
编辑,这里是一个传统方法的示例:

var expected = new List<Type_>{
                    new Type_{
                        ID = 1,
                        Name = "abc"
                    };
CollectionAssert.AreEqual(expected, actual.Types);
var预期值=新列表{
新型_{
ID=1,
Name=“abc”
};
CollectionAssert.AreEqual(预期类型、实际类型);

我想尝试传统的方法。如何做到最好?我必须先创建一个预期的\u type\u列表副本才能断言它吗?我不知道如何仅在断言中处理内部列表?我也考虑过这一点,但我的测试方法只返回一个自定义类(例如Customer)。在这个类中还有三个其他内部列表我可以在我的测试方法中为这些内部列表创建临时列表,但是我只能返回一个类。
var expected = new List<Type_>{
                    new Type_{
                        ID = 1,
                        Name = "abc"
                    };
CollectionAssert.AreEqual(expected, actual.Types);