Есть ли в Nunit встроенное утверждение, которое проверяет, что все свойства двух объектов одинаковы, и мне не нужно переопределять Equals?
В настоящее время я использую отражение для утверждения каждого отдельного свойства для пары объектов.
Есть ли в Nunit встроенное утверждение, которое проверяет, что все свойства двух объектов одинаковы, и мне не нужно переопределять Equals?
В настоящее время я использую отражение для утверждения каждого отдельного свойства для пары объектов.
Я не верю, что есть.
Assert.AreEqual сравнивает нечисловые типы с помощью Equals.
Assert.AreSame проверяет, относятся ли они к одному и тому же объекту
Вы можете написать независимые от фреймворка утверждения, используя библиотеку под названием Should. Он также имеет очень приятный плавный синтаксис, который можно использовать, если вам нравятся плавные интерфейсы. У меня был пост в блоге, связанный с тем же.
http://nileshgule.blogspot.com/2010/11/use-should-assertion-library-to-write.html
Вы можете два объекта и их свойства с помощью ShouldBeEquivalentTo
dto.ShouldBeEquivalentTo(customer);
https://github.com/kbilsted/StatePrinter был написан специально для вывода графов объектов в строковое представление с цель написания простых модульных тестов.
Данный
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);