2017-07-24 81 views
0

我正在使用xunit進行單元測試,我有一個期望對象列表和一個實際對象列表。如何比較兩個列表中每個對象(日期)的特定元素以查看它們是否相等?我找到了Assert.Collection方法,但我無法弄清楚它如何比較兩個列表的內容。比較兩個列表與Xunit

回答

3

你不需要XUnit的細節。這個問題可以通過使用LINQ來解決。

要從列表進行比較的元素簡單地使用:

Assert.True(isList[1] == shouldList[1]); 

只是內容直接訪問列表。如果你不知道的指數,你可以使用LINQ:

Assert.True(shouldList.Any(x => x == isList[1]); 

這將檢查shouldList包含等於isList第二元素的任何元素。

如果你想比較,如果該列表中的內容是相同的,不知道該序列,使用類似這樣的:shouldList

Assert.True(shouldList.All(shouldItem => isList.Any(isItem => isItem == shouldItem))); 

此檢查所有項目,在isList至少一個項目是相同的。

備註:

我用==操作比較。如果這項工作取決於列表的內容。你說你比較日期,這裏equals將檢查平等,而不是身份。對於大多數參考類型,equals只會比較身份。在這裏,您可以覆蓋默認的equals實現,也可以比較自定義字段和屬性,而不是使用==運算符。

+0

感謝您的幫助,測試現在通過。我沒有任何選項將此標記爲答案,儘管 – proteus

+0

@proteus應該是附近的upvote按鈕的標誌https://stackoverflow.com/help/accepted-answer – Iqon

+0

找到它了,謝謝 – proteus