NUnit-Assert检查所有属性是否相等?

NUnit-Assert检查所有属性是否相等?,nunit,Nunit,Nunit中是否内置了一个断言来检查两个对象之间的所有属性是否相同,而不必重写Equals 我目前正在使用反射来断言一对对象的每个单独属性。我认为没有 Assert.AreEqual按相等值比较非数字类型。 Assert.arame检查它们是否引用相同的对象您可以使用名为Should的库编写框架无关断言。它还有一个非常好的fluent语法,如果您喜欢fluent接口,可以使用它。我有一篇与此相关的博客文章 您可以使用shouldbeeeEquivalento创建两个对象和三个属性 已专门编写,

Nunit中是否内置了一个断言来检查两个对象之间的所有属性是否相同,而不必重写Equals


我目前正在使用反射来断言一对对象的每个单独属性。

我认为没有

Assert.AreEqual按相等值比较非数字类型。

Assert.arame检查它们是否引用相同的对象

您可以使用名为Should的库编写框架无关断言。它还有一个非常好的fluent语法,如果您喜欢fluent接口,可以使用它。我有一篇与此相关的博客文章

您可以使用shouldbeeeEquivalento创建两个对象和三个属性

已专门编写,用于将对象图转储到字符串表示,目的是编写简单的单元测试

  • 它来自于输出正确转义字符串easy copy paste到测试中以更正它的断言方法
  • 它允许自动重新写入unittest
  • 它与所有单元测试框架集成
  • 与JSON序列化不同,循环引用是受支持的
  • 您可以轻松地进行筛选,因此只转储部分类型
给定

您可以使用类型安全的方式,并使用VisualStudio包含或排除字段的自动完成

  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);
var printer=newstateprinter();
printer.Configuration.Projectionharvester().Exclude(x=>x.x,x=>x.Y);
var sut=newa{X=DateTime.Now,Name=“Charly”};
应为var=@“newa(){Name=”“Charly”“}”;
printer.Assert.printisame(应为sut);

我们可以,但我们应该吗?我想你想要
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);