测试两个词典包含相同的元素

时间:2016-05-19 16:36:50

标签: c# .net unit-testing .net-4.5 mstest

MSTest提供CollectionAssert课程,根据这个问题,我将比较返回的词典符合我的期望:.NET Dictionaries have same keys and values, but aren't "equal"

然而,我故意按照与返回版本不同的顺序填充我的词典,但使用完全相同的元素...现在CollectionAssert.AreEqual在我打电话时失败:

CollectionAssert.AreEqual((ICollection)expected, (ICollection)ret)

这似乎不是一个非常好的平等测试 - 我需要自己动手还是MSTest提供开箱即用的东西?

2 个答案:

答案 0 :(得分:2)

您可以使用AreEquivalent

avconv -i input.ogv -r 30 -b 4096k output.mp4

此方法测试集合是否具有相同数量的相同元素,但是以任何顺序排列。

答案 1 :(得分:2)

在同一个类中有另一个名为AreEquivalent();

的方法

如果作为参数发送的两个ICollection对象具有相同数量的相同元素,则返回true。在这种情况下,订单无关紧要。这是AreEqual()和AreEquivalent()之间的最大区别。

您可以在下面找到MSDN页面的官方说明。

"验证指定的集合是否等效。如果两个集合具有相同数量的相同元素,则它们是等效的,但是以任何顺序排列。如果元素的值相等,则元素相等,而不是它们引用相同的对象。"

你对函数的调用与你对AreEqual()的调用相同,见下文;

CollectionAssert.AreEquivalent((ICollection)expected, (ICollection)ret)