のJunitテストでは、IOexceptionがテスト中のオブジェクトによってスローされている場合にのみ失敗するテストケースがあります。@Testを使用して、
したがって、テスト対象オブジェクトがIllegalStateException(またはその他のエラーまたは例外)をスローする場合、テストケースはOKですが、テスト対象オブジェクトがIOexceptionをスローすると、テストケースが失敗する必要があります。
どうすればいいですか?
ありがとうございます。
のJunitテストでは、IOexceptionがテスト中のオブジェクトによってスローされている場合にのみ失敗するテストケースがあります。@Testを使用して、
したがって、テスト対象オブジェクトがIllegalStateException(またはその他のエラーまたは例外)をスローする場合、テストケースはOKですが、テスト対象オブジェクトがIOexceptionをスローすると、テストケースが失敗する必要があります。
どうすればいいですか?
ありがとうございます。
あなたは例外のIOExceptionされていない場合、あなたはIOException
をキャッチし、以下のようにfail()
をアサートすることによってそれを行うことができます失敗したいと:
@Test
public void yourTestScenario() {
try {
//code that throws IOException and other Exceptions
} catch(IOException ioexe) {
Assert.fail();
} catch(Exception exe) {
//Ignore
}
}
これは反パターンです。 JUnitまたはAssertJを使用して、スローされた例外を検証できます。 –
あなたは明確に質問しましたか?彼は期待した条件ではなく、IOException条件ではないことを望んでおり、どちらも単一の方法で処理したいと考えています – developer
提案された回答をご覧ください。テストメソッドでtry/catchを使用するのは魅力的ですが、おそらく最良の答えではありません。 –
あなたが予想される例外ルール
を使用することができます@Rule
public ExpectedException expected = new ExpectedException();
@Test
public void doSomethingWithNoIOException() {
// we expect an exception that's NOT an instance of IOException
// you'll need to static import the hamcrest matchers referenced below
expected.expect(not(instanceOf(IOException.class));
// call the method under test
callSomething();
}
私はこれを知っていますが、このアプローチを使用することによって得られる利点は何ですか?私はそれが完全に意見に基づいていると思うし、我々はいずれかのアプローチに従うことができます – developer
あなたが議論を開始しようとしているようです。上記はテストフレームワークを使用しています。 try/catchの代わりに、テストフレームワークの外部で動作する傾向があります。私の好みは、あなたが両方の世界のベストを持つことができるところでAssertJを使うことです。 –
コードを表示できますか? –