2009-07-21 23 views
11

Nunitには、2つのオブジェクト間のすべてのプロパティをチェックするアサーションがありますが、これはEqualsをオーバーライドする必要はありませんか?NUnit - すべてのプロパティが等しいかどうかを確認するアサート?

私は現在、リフレクションを使用してオブジェクトのペアごとに個々のプロパティをアサートしています。

+0

私はあなたが私たちがすることができますが、我々がすべき Stobor

答えて

3

私はそこにいるとは思わない。

Assert.AreEqualは、数値以外の型をEqualsで比較します。
Assert.AreSameは、同じオブジェクトを参照しているかどうかを確認します。

1

Shouldという名前のライブラリを使用して、フレームワークにアグノスティックなアサートを書き込むことができます。また、とても流暢な構文があり、流暢なインターフェースが好きな方にも使えます。私は同じものに関連するブログ記事を持っていました。

http://nileshgule.blogspot.com/2010/11/use-should-assertion-library-to-write.html

あなたShouldBeEquivalentTo

dto.ShouldBeEquivalentTo(customer); 
+5

をしたいと思いますか? – JamesFaix

0

https://github.com/kbilsted/StatePrinter持つことができる2つのオブジェクトとそこのプロパティは、簡単にユニットテストを書くことを目的とした文字列表現にオブジェクトグラフをダンプするために特別に書かれています。

  • 適切にエスケープされた文字列を簡単にコピーしてテストにコピーして修正するアサートメソッドがあります。
  • それは、すべてのユニットテストと統合
  • は、JSONのシリアライズとは異なり
  • をフレームワーク、循環参照がそのようなタイプの部分だけが
  • をダンプされ、あなたが簡単にフィルタリングすることができ
  • をサポートしています自動的に再書き込むことがunittestのことができます

考える

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); 
関連する問題