2016-05-19 72 views
-2

MSTest的提供CollectionAssert類,並在此基礎上的問題,我比較返回的字典符合我的期望:.NET Dictionaries have same keys and values, but aren't "equal"測試兩個詞典包含相同的元素

但是後來我故意填充我的字典以不同的順序返回的版本,但完全相同的元素......現在CollectionAssert.AreEqual失敗,當我打電話:

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

這似乎不是一個很好的平等的測試 - 我是否需要推出自己的或不MSTest的東西提供出來的b牛?

回答

2

在同一個類中有另一個名爲AreEquivalent()的方法;

如果您作爲參數發送的兩個ICollection對象具有相同數量的相同元素,這將返回true。在這種情況下,訂單無關緊要。這是AreEqual()和AreEquivalent()之間的最大區別。

下面你可以從MSDN頁面找到官方說明。

「驗證指定的集合是否等價,如果它們具有相同數量的相同元素,但是是任意順序,那麼這兩個集合是等價的;如果它們的值相等,則元素相等,如果它們引用同一對象「。

而你對該函數的調用與AreEqual()的調用相同,見下文;

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

您可以使用AreEquivalent

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

這種方法測試,如果集合有相同數量相同的元素,但在任何順序。

相關問題