【发布时间】:2010-11-12 13:46:21
【问题描述】:
Nunit 中是否有一个断言可以检查 2 个对象之间的所有属性是否相同,而无需我重写 Equals?
我目前正在使用反射来断言一对对象的每个单独属性。
【问题讨论】:
-
我想你想要stackoverflow.com/questions/318210/…>
标签: nunit
Nunit 中是否有一个断言可以检查 2 个对象之间的所有属性是否相同,而无需我重写 Equals?
我目前正在使用反射来断言一对对象的每个单独属性。
【问题讨论】:
标签: nunit
我不相信有。
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);
【讨论】: