Вывод свойств объекта в NUnit

Используя NUnit создаю тест для сравнения двух массивов:
Class1[] array1;
Class1[] array2;
...
Assert.That(array1, Is.EqualTo(array2).Using(new Class1Comparer()));

В результате получаю сообщение:
Tester.Test_2861:
Expected and actual are both <Class1[161]> Values differ at index [0]
Expected: <Class1>
But was: <Class1>

Как вместо "Expected: <Class1>" и "But was: <Class1>" вывести понятные значения? Например:
Expected: {X: 10, Y: "Hi"}
But was: {X: 10, Y: "Hello"}

Тип Class1 является сторонним и его нельзя поменять.
  • Вопрос задан
  • 2580 просмотров
Решения вопроса 1
В сообщении выводиться текст, который возвращает ToString().

Если Class1 нельзя менять, то можно создать класс "обертки", в котором переопределить метод ToString() так, что б он выводил нужную информацию. Также придется вместо Class1Comparer использовать другой класс, который сравнит "обертки"

class Class1Wrapper {
   public readonly Class1 Wrapped;
  
   public Class1Wrapper(Class1 toWrap) { 
       Wrapperd = toWrap;
   }

  public override string ToString() {
      return string.Format("X: {0}, Y : {1}", Wrapped.X, Wrapped.Y);
  }

 public static Class1Wrapper Wrap(Class1 toWrap) { 
    return new Class1Wrapper(toWrap) ;
  }
}

Дальше в тесте

Assert.That(templateSeries.getElements().Select(Class1Wrapper.Wrap).ToArray(),
         Is.EqualTo(resultSeries.getElements().Select(Class1Wrapper.Wrap).ToArray())
          .Using(new Class1WrapperComparer()));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы