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

时间:2009-07-21 08:08:47

标签: nunit

Nunit中是否有一个断言检查2个对象之间的所有属性是否相同,而我不必重写等于?

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

3 个答案:

答案 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专门用于将对象图转储为字符串表示,目的是编写简单的单元测试。

  • 它提供了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);