1

2 つの正しい結果が考えられるテスト ケースの UnitTest を作成しようとしています。どの結果が返されるかは実際の実装によって異なりますが、要件には関係ありません。どちらでも構いません。

2 つの Assert は機能しません。1 つは常に失敗します。

現在、2 つの結果をリストに追加し、計算結果がそのリストにあることをアサートします。

Assert.IsTrue(list.Contains(result));

それは機能しますが、テストが失敗した場合、期待/実際の出力が得られません (これは通常非常に役立ちます)。

2 つの可能な期待値のうちの 1 つに対してアサートするよりエレガントな方法はありますか?

(私は現在 MSTest を使用していますが、他のフレームワークが提供できるもの、または一般的なアドバイスがあるかどうかを聞いてオープンです)

4

3 に答える 3

2

NUnitMSTestの両方の Assert.IsTrue には、アサーションが失敗した場合に表示されるメッセージを設定するためのオーバーロードがあります。あなたの場合、アサーションを次のように編集できます

Assert.IsTrue(list.Contains(result), 
    "The list did not contain the value " + result);

このメッセージは、必要に応じて明示的にすることができます

Assert.IsTrue(list.Contains(result), 
    "The list was expected to contain the value " + result
    + Environment.NewLine + "but had the values " + 
    methodToPrintContentsOfList(list));

これは、あいまいなアサーション メッセージの問題を解決するのに役立ちます。

于 2012-08-03T17:49:02.300 に答える
0

fest assert を使用し、次のことを行います。

assertThat(calculatedResult).isIn(1, 4, 15, 37);
于 2012-08-03T17:07:01.553 に答える