Will man in einem Unit Test 2 Listen z.B. vom Typ List<T> vergleichen muss man sicherstellen das die Klassen in der Liste auch die Equals Methode richtig implementieren. Beispiel: Dieser Code funktioniert nur wenn die Klasse DataItem die Equals Methode überschreibt.
[TestMethod] public void GetDataList_TestWithEquals() { Class1 c = new Class1(); var expectedList = new List<DataItem>() {new DataItem { Name = "Test"}}; CollectionAssert.AreEqual(expectedList, c.GetDataList()); }
Alternativ kann man bei CollectionAssert.AreEqual auch eine Klasse angeben welche das Interface IComparer implementiert:
[TestMethod] public void GetDataList_TestWithIComparer() { Class1 c = new Class1(); var expectedList = new List<DataItem>() {new DataItem { Name = "Test"}}; CollectionAssert.AreEqual(expectedList, c.GetDataList(), new DataItemComparer()); }
Hier das Sample als kleines VS2012 Projekt: Download