当存在差异时,如何让NUnit集合比较调用ToString
本文关键字:NUnit 集合 比较 ToString 调用 存在 | 更新日期: 2023-09-27 18:07:59
我正在使用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不调用它。我错过了什么?
您已经隐藏了 object
的方法,而不是重写它。使用:
public override string ToString()
基本上NUnit只是调用object.ToString()
-你没有重写它。除非它特别查找带有反射的new方法,否则它不会找到您的方法——重写是实现此目的的惯用方法。这只是一个简单的错误,还是您出于某种原因想要隐藏方法?