オペランドが適切でない場合にスローする演算子があります。(具体的には、int ベースのクラスで 10 進数の乗算を行っています。これは、意味がある場合 (例: 2 * 0.5) は許可されますが、結果が丸められた数値でない場合はスローされます (例: 2*0.3))。
nUNit の Assert.Throws<>() を使用してこれをテストすることはできないようです。これを呼び出すと考えられるすべての方法でコンパイラ エラーが発生するためです。
Assert.Throws<InvalidOperationException>(originalValue * badDecimalMultiplier);
Assert.Throws<InvalidOperationException>(dummy => originalValue * badDecimalMultiplier);
Assert.Throws<InvalidOperationException>(dummy => dummy = originalValue * badDecimalMultiplier);
Assert.Throws<InvalidOperationException>(() => dummy = originalValue * badDecimalMultiplier);
- 最初のものは、操作の結果をパラメーターとして Throws() に渡そうとしますが、Throws は TestDelegate のみを受け入れるため失敗します。
- 2 つ目は、「代入、呼び出し、インクリメント、デクリメント、および新しいオブジェクト式のみをステートメントとして使用できます」というエラーで失敗します。
- 3 番目は、「デリゲート 'NUnit.Framework.TestDelegate' は引数を 1 つ取りません」で失敗します。
- 4番目(および私が見つけたすべてのバリエーション)では、宣言されていない変数に割り当てることはできません(驚くべきことではありません)
手動で例外をキャッチしてテストする必要があると思いますか? それか、操作を保持する実際のメソッドを定義しますが、これはあまり良くないようです。
何か不足していますか?そうでない場合は、次にこれを調べようとする人が答えを得ることができるように、確認を取得できますか.