2017-07-24 188 views
0

我正在使用xunit进行单元测试,我有一个期望对象列表和一个实际对象列表。如何比较两个列表中每个对象(日期)的特定元素以查看它们是否相等?我找到了Assert.Collection方法,但我无法弄清楚它如何比较两个列表的内容。比较两个列表与Xunit

回答

3

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

要从列表进行比较的元素简单地使用:

Assert.True(isList[1] == shouldList[1]); 

只是内容直接访问列表。如果你不知道的指数,你可以使用LINQ:

Assert.True(shouldList.Any(x => x == isList[1]); 

这将检查shouldList包含等于isList第二元素的任何元素。

如果你想比较,如果该列表中的内容是相同的,不知道该序列,使用类似这样的:shouldList

Assert.True(shouldList.All(shouldItem => isList.Any(isItem => isItem == shouldItem))); 

此检查所有项目,在isList至少一个项目是相同的。

备注:

我用==操作比较。如果这项工作取决于列表的内容。你说你比较日期,这里equals将检查平等,而不是身份。对于大多数参考类型,equals只会比较身份。在这里,您可以覆盖默认的equals实现,也可以比较自定义字段和属性,而不是使用==运算符。

+0

感谢您的帮助,测试现在通过。我没有任何选项将此标记为答案,尽管 – proteus

+0

@proteus应该是附近的upvote按钮的标志https://stackoverflow.com/help/accepted-answer – Iqon

+0

找到它了,谢谢 – proteus