我正在使用VS 2010,并使用NUnit运行我的单元测试。以下行正确检测两个列表是否不同:
CollectionAssert.AreEqual(expected, actual);
但是,我想要一个比以下更好的错误消息:
Expected and actual are both <System.Collections.Generic.List`1[MyNamespace.MyClass]> with 2 elements
Values differ at index [0]
Expected: <MyNamespace.MyClass>
But was: <MyNamespace.MyClass>
在MyNamespace.MyClass中,我实现了以下方法:
public new string ToString()
我希望NUnit输出以下内容:
Expected and actual are both <System.Collections.Generic.List`1[MyNamespace.MyClass]> with 2 elements
Values differ at index [0]
Expected: <24 ounces of cold beer>
But was: <2.4 ounces of rotten tomatoes>
但是,NUnit不会调用它。我错过了什么?
答案 0 :(得分:5)
您隐藏该方法来自object
而不是覆盖它。使用此:
public override string ToString()
基本上NUnit只是调用object.ToString()
- 你没有覆盖它。除非它专门寻找带有反射的 new 方法,否则它找不到你的方法 - 并且覆盖是这样做的惯用方法。这只是一个简单的错误,还是因为某些原因你意味着影响方法?