私は MSTest を使用しており、[TestMethod] にはコードが例外をスローするオブジェクトがあり、それをキャッチします。特定の状況では再スローしますが、再スローしない場合もありますが、何度か再スローしなくても、テストは常に失敗し、例外がスローされたことを示します。条件付きで例外を無視するにはどうすればよいですか? 条件付きなので、例外を再スローするかどうかにかかわらず、[ExpectedException] は使用できません。
1 に答える
0
メソッドは確定的な状況でテストする必要があります。つまり、常に同じ応答を返す一連の引数を使用してテストする必要があります。メソッドが例外をスローする場合とスローしない場合がある場合は、例外がスローされる場合とそうでない場合に別のテストを作成する必要があります。
例外をスローする条件を制御できない場合は、コードをリファクタリングして条件を抽出し、決定論的な方法でメソッドをテストできるようにする必要があることを示しています。
例えば:
[TestMethod]
public void SomeMethodDoesntFail()
{
var obj = new objectUnderTest();
var shouldThrow = false;
var result = obj.SomeMethod(shouldThrow);
Assert.IsEqual(*expected result*, result);
}
[TestMethod, ExpectedException]
public void SomeMethodFails()
{
var obj = new objectUnderTest();
var shouldThrow = true;
var result = obj.SomeMethod(shouldThrow);
}
于 2012-03-16T19:18:16.543 に答える