我想創建一個單元測試,比較兩個字符串數組列表。比較兩個列表中的<string[]>對象在C#單元測試
我試圖創建兩個完全相同的List<string[]>
的對象,但是當我使用CollectionAssert.AreEqual(expected, actual);
,該測試失敗:
[TestMethod]
public void TestList()
{
List<string[]> expected = new List<string[]> {
new string[] { "John", "Smith", "200" },
new string[] { "John", "Doe", "-100" }
};
List<string[]> actual = new List<string[]> {
new string[] { "John", "Smith", "200" },
new string[] { "John", "Doe", "-100" }
};
CollectionAssert.AreEqual(expected, actual);
}
我也試過Assert.IsTrue(expected.SequenceEqual(actual));
,但失敗也是如此。
如果我比較兩個字符串列表或兩個字符串數組,但它們在比較兩個字符串數組列表時無效。
我假設這些方法失敗,因爲他們比較兩個對象引用列表而不是數組字符串值。
如何比較兩個List<string[]>
對象並判斷它們是否真的相同?
試試這個:元素,你可以當你把它做到這一點通過在
IComparer
'expected.Zip(實際,(E,A)=> e.SequenceEqual(一))所有( x => x)'。 – Enigmativity出於好奇......如果它們具有相同的元素但順序不同,您會認爲列表「相等」嗎?另外,值得注意的是,一個字符串數組是一個對象的可怕替代品。 – David
@David對於這個特定的測試,我會很好的解決方案,要求元素的順序相同,以及忽略順序的解決方案。我同意對象通常比字符串數組更好。此代碼是更大圖片的一部分,需要採用此格式。 –