2011-10-22 34 views
0

所以我生成一個空Dictionary<string,string>比較我的測試結果,然後我這樣做:MSTest的Assert.AreEqual問題

Assert.AreEqual(retval, temp); 

它失敗,即使它們包含相同的確切數據。我也試過使用IsTrue這樣的:Assert.IsTrue(retval.Equals(temp));,即使它們是相同的也會失敗。

我如何才能比較元素,而不是我假設它正在做的相同的內存位置?

謝謝。

回答

0

你可以做Assert.IsTrue(retval.SequenceEqual(temp)),雖然這也會要求字典中元素的順序是一樣的。我不確定你是否希望你的測試平等嚴格。

請參閱this question及其答案的方法來比較字典的內容,無論序列。

+0

由於字典中元素的順序未定義,SequenceEqual永遠不能保證工作。 – CodesInChaos

+0

@CodeInChaos,這是否意味着即使字典的內容沒有被修改,順序可能會在枚舉之間改變?我並不反對你,只是想明白爲什麼'SequenceEqual'不起作用。 –

+0

它不會在枚舉之間變化,但不能保證包含相同元素的兩個字典實例將按照相同的順序枚舉。在實踐中,如果您按照相同順序對它們進行所有修改,它們可能會具有相同的順序,但不能保證能夠正常工作。 – CodesInChaos