将两个列表与Xunit进行比较

时间:2017-07-24 15:49:11

标签: c# assert xunit.net

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

1 个答案:

答案 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)));

这会检查shouldListisList中至少有一项是完全相同的所有项目。

<强> REMARK:

我使用==运算符进行比较。如果这有效取决于列表的内容。你说你在比较日期,这里equals将检查是否相等,而不是身份。对于大多数参考类型,equals只会比较身份。在这里,您要么覆盖默认的equals实现,要么比较自定义字段和属性,而不是使用==运算符。