Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.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# 使用Xunit比较两个列表_C#_Assert_Xunit.net - Fatal编程技术网

C# 使用Xunit比较两个列表

C# 使用Xunit比较两个列表,c#,assert,xunit.net,C#,Assert,Xunit.net,我使用xunit进行单元测试,我有一个预期对象列表和一个实际对象列表。如何比较两个列表中每个对象(日期)的特定元素,以确定它们是否相等?我找到了Assert.Collection方法,但我不知道它如何比较两个列表的内容。您不需要XUnit细节。这个问题可以通过使用LINQ来解决 要比较列表中的元素,只需使用: Assert.True(isList[1] == shouldList[1]); 直接访问列表内容即可。如果不知道索引,可以使用LINQ: Assert.True(shouldList.

我使用xunit进行单元测试,我有一个预期对象列表和一个实际对象列表。如何比较两个列表中每个对象(日期)的特定元素,以确定它们是否相等?我找到了Assert.Collection方法,但我不知道它如何比较两个列表的内容。

您不需要XUnit细节。这个问题可以通过使用LINQ来解决

要比较列表中的元素,只需使用:

Assert.True(isList[1] == shouldList[1]);
直接访问列表内容即可。如果不知道索引,可以使用LINQ:

Assert.True(shouldList.Any(x => x == isList[1]);
这将检查
shouldList
是否包含与
isList
中的第二个元素相等的元素

如果要比较列表内容是否相同,而不知道顺序,请使用以下方法:

Assert.True(shouldList.All(shouldItem => isList.Any(isItem => isItem == shouldItem)));
这将检查
shouldList
中的所有项目,确保
isList
中至少有一个项目相同

备注:


我使用
==
操作符进行比较。这是否有效取决于列表的内容。你说你是在比较日期,这里的
equals
将检查是否相等,而不是身份。对于大多数引用类型,
equals
将只比较标识。在这里,您可以覆盖默认的
equals
实现,或者比较自定义字段和属性,而不是使用
=
操作符。

谢谢您的帮助,测试现在通过了。我没有任何选择将此标记为答案though@proteus应该是upvote按钮附近的标志
var c1=newint[]{1,2,2};var c2=新的int[]{1,2,3};True(c1.All(shouldItem=>c2.Any(isItem=>isItem==shouldItem))此过程,但集合是不同的@Abedron注意到,我认为仅检查shouldList中的所有项是否具有相同的in-isList是不够的。您需要通过另一种方法来避免识别的问题:
Assert.True(isList.All(isItem=>shoullist.Any(shouldItem=>isItem==shouldItem))