我想在.NET中使用MSTEST在單元測試中比較2個集合的內容。爲了使事情變得簡單,我不再需要.Sort(),然後遍歷集合並逐個比較項目,我發現了新的非常酷的.Intersect擴展方法。相交擴展方法,區分大小寫不起作用
似乎做的工作很棒:
Assert.AreEqual(expected.Count, actual.Intersect(expected).Count)
然而,現在我有一個測試,需要區分大小寫,它打破。我試着發送Intersect的第二個參數StringComparer.Ordinal,StringComparer.InvariantCulture和StringComparer.CurrentCulture ...沒有運氣..
任何人都會遇到過這種情況嗎?
謝謝!
編輯:這裏是數據:
Actual:
(0) "FOO" String
(1) "foo" String
(2) "Foo" String
(3) "fOo" String
(4) "foO" String
(5) "BAR" String
(6) "BAR" String
(7) "BAZ" String
(8) "baz" String
(9) "foo" String
Expected:
(0) "FOO" String
(1) "foo" String
(2) "Foo" String
(3) "fOo" String
(4) "foO" String
(5) "BAR" String
(6) "BAR" String
(7) "BAZ" String
(8) "baz" String
(9) "foo" String
actual.Intersect(expected, StringComparer.CurrentCulture)
(0) "FOO" String
(1) "foo" String
(2) "Foo" String
(3) "fOo" String
(4) "foO" String
(5) "BAR" String
(6) "BAZ" String
(7) "baz" String
好像被刪除匹配複製「富」,並匹配重複的「BAZ」。也許有更好的方式來斷言集合是否匹配?
_EDIT2:我認爲Intersect()刪除重複項,這就是爲什麼這是打破。我找到了CollectionAssert類。這正是我需要的!謝謝! _
當你說「它打破了」和「沒有運氣」,你是什麼意思?你的意思是「它打破了」,如「它給出了錯誤的計數」?你的意思是「沒有運氣」,如「它給出了同樣的錯誤結果」? –
此外,您是否確定不區分大小寫的工作是正確的,並且不只是巧合地給出正確的計數? –
此外,您可能想要查看CollectionAssert類,這可能更適合您嘗試執行的操作。 –