NUnit - Утвердить, чтобы проверить, что все свойства равны?

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

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


person Castrohenge    schedule 21.07.2009    source источник
comment
Я думаю, вы хотите ‹stackoverflow.com/questions/318210/  -  person Stobor    schedule 21.07.2009


Ответы (3)


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

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

person AdaTheDev    schedule 21.07.2009

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

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

Вы можете два объекта и их свойства с помощью ShouldBeEquivalentTo

dto.ShouldBeEquivalentTo(customer);
person Nilesh Gule    schedule 16.11.2010
comment
Мы можем, но должны ли мы? - person JamesFaix; 29.08.2016

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

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

Данный

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

Вы можете типобезопасным способом и с помощью автозаполнения Visual Studio включать или исключать поля.

  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);
person Carlo V. Dango    schedule 07.03.2015