我正在使用xunit进行单元测试,我有一个预期对象列表和一个实际对象列表。如何比较两个列表中每个对象的特定元素(日期)以查看它们是否相等?我找到了Assert.Collection方法,但我无法弄清楚如何比较两个列表的内容。
答案 0 :(得分:5)
您不需要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
中至少有一项是完全相同的所有项目。
<强> REMARK:强>
我使用==
运算符进行比较。如果这有效取决于列表的内容。你说你在比较日期,这里equals
将检查是否相等,而不是身份。对于大多数参考类型,equals
只会比较身份。在这里,您要么覆盖默认的equals
实现,要么比较自定义字段和属性,而不是使用==
运算符。