Aug 172012
 

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

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)