MSTest提供CollectionAssert
课程,根据这个问题,我将比较返回的词典符合我的期望:.NET Dictionaries have same keys and values, but aren't "equal"
然而,我故意按照与返回版本不同的顺序填充我的词典,但使用完全相同的元素...现在CollectionAssert.AreEqual
在我打电话时失败:
CollectionAssert.AreEqual((ICollection)expected, (ICollection)ret)
这似乎不是一个非常好的平等测试 - 我需要自己动手还是MSTest提供开箱即用的东西?
答案 0 :(得分:2)
答案 1 :(得分:2)
在同一个类中有另一个名为AreEquivalent();
的方法如果作为参数发送的两个ICollection对象具有相同数量的相同元素,则返回true。在这种情况下,订单无关紧要。这是AreEqual()和AreEquivalent()之间的最大区别。
您可以在下面找到MSDN页面的官方说明。
"验证指定的集合是否等效。如果两个集合具有相同数量的相同元素,则它们是等效的,但是以任何顺序排列。如果元素的值相等,则元素相等,而不是它们引用相同的对象。"
你对函数的调用与你对AreEqual()的调用相同,见下文;
CollectionAssert.AreEquivalent((ICollection)expected, (ICollection)ret)