开发者

Why does this test method fail?

Here's my test function (c#, visual studio 2010):

[TestMethod()]
public void TestGetRelevantWeeks()
{
List<sbyte> expected = new List<sbyte>() { 2, 1, 52, 51, 50, 49, 48, 47, 46, 45 };
List<sbyte> actual = new List<sbyte>() { 2, 1, 52, 51, 50, 49, 48, 47, 46, 45 };
Assert.AreEqual<List<sbyte>>(expected, actual);
}

Exception: Failed TestGetRelevantWeek开发者_JAVA百科 Assert.AreEqual failed.

Expected:System.Collections.Generic.List 1[System.SByte].

Actual:System.Collections.Generic.List 1[System.SByte].


Does AreEqual only check equality of the reference, not the contents?

But then, the exception message would be confusing. I also couldn't find a documentation of the default equality comparer for a generic list.

Could you help to clarify why the test fails and what would be solutions for testing the equality of the contents of both lists?

Kind regards


The Assert.AreEqual() method does a reference equality test as you expected.

Assuming you're using .Net 3.5 or above, you can do this:

using System.Linq;

Assert.IsTrue(expected.SequenceEqual(actual));

Edit: Clarified when this option is available.


Does AreEqual only check equality of the reference, not the contents?

Yeap.

To test the contents you could:

Assert.AreEqual(expected.Count, actual.Count);
for (var i = 0; i < expected.Count; i++)
{
    Assert.AreEqual(expected[i], actual[i]);
}


I think that this is what your are looking for:

Assert.IsTrue(expected.SequenceEqual(actual));

Check this question


You can also use CollectionAssert instead of Assert:

CollectionAssert.AreEqual(expected, actual);

I think it is much more simple and fancier than a loop over the collection of your test cases.


CollectionAssert.AreEqual(expected, actual);
Assert.IsTrue(expected.SequenceEqual(actual));
Assert.IsTrue(expected.SequenceEqual(actual));

These options don't work for me.

Probably the only viable option. Had to use this:

for (var i = 0; i < expected.Count; i++)
        {
            Assert.AreEqual(expected[i], actual[i]);
        }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜