当存在差异时,如何让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不调用它。我错过了什么?

当存在差异时,如何让NUnit集合比较调用ToString

您已经隐藏了 object的方法,而不是重写它。使用:

public override string ToString()

基本上NUnit只是调用object.ToString() -你没有重写它。除非它特别查找带有反射的new方法,否则它不会找到您的方法——重写是实现此目的的惯用方法。这只是一个简单的错误,还是您出于某种原因想要隐藏方法?