Как сделать так, чтобы сравнение коллекций NUnit вызывало ToString при наличии расхождений - PullRequest
1 голос
/ 08 сентября 2011

Я использую 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 не вызывает его. Чего мне не хватает?

1 Ответ

5 голосов
/ 08 сентября 2011

Вы скрыли метод из object вместо , переопределяющего его. Используйте это:

public override string ToString()

По сути, NUnit просто вызывает object.ToString(), который вы не переопределили. Если бы он специально не искал новый метод с отражением, он не нашел бы ваш - и переопределение - идиоматический способ сделать это. Было ли это простой ошибкой, или вы имели в виду по какой-то причине скрывать метод?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...