Nunit中是否有一个断言检查2个对象之间的所有属性是否相同,而我不必重写等于?
我目前正在使用反射来断言一对对象的每个单独属性。
答案 0 :(得分:3)
我不相信有。
Assert.AreEqual按等号比较非数字类型 Assert.AreSame检查它们是否引用同一个对象
答案 1 :(得分:1)
您可以使用名为Should的库编写框架无关的断言。它还有一个非常好的流利语法,如果你喜欢流畅的界面,可以使用它。我有一篇与之相关的博客文章。
http://nileshgule.blogspot.com/2010/11/use-should-assertion-library-to-write.html
您可以使用 ShouldBeEquivalentTo
创建两个对象和属性dto.ShouldBeEquivalentTo(customer);
答案 2 :(得分:0)
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);