2017-06-29 7 views
0

私はコードジェネレータの単体テストを書いています。私のテストでは、いくつかの行にまたがる出力といくつかのゴールデンアウトプットを比較しています。現在、私はAssert.AreEqual(string, string)と出力を比較しています。最初の違いの前後にコンテキストが表示されます。NUnit Assert AreEqual strings diff

残念ながら、これはあまり役に立ちません。理想的には、私は出力のdiffを取得したいと思います。 これを行う最善の方法は何ですか?私の現在の計画は、生成されたコードをファイルに書き込んで、DIFFTOOLのenv var(else diff.exeからPATH、それ以外の場合はデフォルトのNUnitの動作)によって参照される実行可能ファイルを呼び出し、Assert.Fail()に適切なメッセージを呼び出します。

答えて

2

EqualConstraintの修飾子として.NoClipを指定すると、長い文字列の切り抜きをなくすことができます。これは、アサーションの制約モデルを使用するレガシーAssert.AreEqualから切り替えるためにあなたを必要とします。

C# Assert.That(actual, Is.EqualTo(expected).NoClip);

これはあなたの両方の文字列の完全な値が得られますが、再フォーマットせずに読みにくくなることがあります。

2つの長い文字列の違いの表示を改善することに長い間関心がありました。来てPRをしてください! :-)