コンテキストXUnit記述アサートメッセージを実装する方法は? xUnit githubの中
私はこれが見つかりました:私たちは、ある
:答えからAdd Assert.Equal(expected, actual, message) overload #350(ので、開発者は以下を参照してください非既存の過負荷を求める)
引用自己文書化コードを信じている。それはあなたの主張を含んでいます。
(そうxUnitのチームがそれを拒否した)
OK、私はそれを得ました。私はまた、自己文書化コードを信じています。それでも私は にこのユースケースを見つけることができません。
サンプル
// Arrange
// Create some external soap service client and its wrapper classes
// Act
// client.SomeMethod();
// Assert
// Sorry, soap service's interface, behaviour and design is *given*
// So I have to check if there is no Error, and
// conveniently if there is, then I would like to see it in the assertion message
Assert.Equal(0, client.ErrorMessage.Length); // Means no error
// I would like to have the same result what would be the following *N*U*n*i*t* assert:
// Assert.AreEqual(0, client.ErrorMessage.Length, client.ErrorMessage); // Means no error
質問
どのように私はまだそのようなを持っていないのxUnitで、この場合の記述アサートメッセージを実装することができます過負荷ですか?
私は問題が何であるか不明です。あなたがコメントで指摘したように、なぜあなたは単に 'Assert.AreEqual(0、client.ErrorMessage.Length、client.ErrorMessage); 'を使用していませんか? – Kritner
XUnitにそのような過負荷はありません。これはNUnitコールです。最初の文章を見てください:開発者がそのようなオーバーロードを要求し、XUnitチームが引用した "私たちは自己文書化コードを信じています;あなたの主張を含んでいます"のために拒否します –
@ g.pickardou、リンクで提供されます。流暢なアサーションのようにするか、メッセージオーバーロードが残ったままの 'Assert.TrueまたはAssert.False'をラップする独自のアサーションを作成します。それはさらに下に述べられています。あなたはAssert.Trueと.Falseにメッセージを提供することができます。あなたが単にメッセージなしで暮らすことができず、別のアサーションを使用することを拒否した場合は、いつでも次のように返すことができます: Assert.True(数字== 2、 "これは私のメッセージです"); ' – Nkosi