NUnit - подтверждение для проверки всех свойств?

Есть ли встроенное в Nunit утверждение, что все свойства между двумя объектами одинаковы, без необходимости переопределять Equals?

В настоящее время я использую отражение для подтверждения каждого отдельного свойства для пары объектов.

Ответы

Ответ 1

Я не верю, что есть.

Assert.AreEqual сравнивает нечисловые типы с помощью Equals.
Assert.AreSame проверяет, ссылаются ли они на один и тот же объект

Ответ 2

Вы можете написать утверждения агностики фреймов, используя библиотеку с именем Should. Он также имеет очень хороший плавный синтаксис, который можно использовать, если вам нравятся плавные интерфейсы. У меня была запись в блоге, связанная с тем же.

http://nileshgule.blogspot.com/2010/11/use-should-assertion-library-to-write.html

Вы можете использовать два объекта и свойства с помощью функции ShouldBeEquivalentTo

dto.ShouldBeEquivalentTo(customer);

Ответ 3

https://github.com/kbilsted/StatePrinter было написано специально, чтобы сбрасывать графы объектов в строковое представление с целью написания простых модульных тестов.

  • Приходит witg Способы подтверждения, которые выводят правильную экранированную строку, легко скопируйте ее в тест, чтобы исправить ее.
  • Он позволяет автоматически переписывать unittest
  • Он интегрируется со всеми модулями тестирования модулей.
  • В отличие от сериализации JSON поддерживаются циклические ссылки
  • Вы можете легко фильтровать, поэтому удаляются только части типов

Учитывая

class A
{
  public DateTime X;
  public DateTime Y { get; set; }
  public string Name;
}

Вы можете использовать безопасный тип и использовать автоматическое заполнение визуальных студий включите или исключите поля.

  var printer = new Stateprinter();
  printer.Configuration.Projectionharvester().Exclude<A>(x => x.X, x => x.Y);

  var sut = new A { X = DateTime.Now, Name = "Charly" };

  var expected = @"new A(){ Name = ""Charly""}";
  printer.Assert.PrintIsSame(expected, sut);