JUnitテスト異常
1739 ワード
次のクラスをテストする必要がある場合は、次の手順に従います.
放出された異常をテストするには、次の3つの方法があります. @Test ( expected = Throwable.class )
このテストには、例外がメソッドのある位置で投げ出されるが、特定の行にあるとは限らないため、誤差がある. ExpectedException JUnitフレームワークのExpectedExceptionクラスを使用する場合は、ExpectedException例外を宣言する必要があります.
@Rule public ExpectedException thrown = ExpectedException.none();
次に、予想される例外をより簡単に検証できます.
予期される例外のプロパティ情報を設定することもできます.
この方法は異常放出の位置をより正確に見つけることができる. try/catch with assert/fail JUnit 4以前のバージョンでtry/catch文ブロックを使用して異常 をチェック
この方法は古くなったが,非常に有効である.主な欠点はcatch文ブロックの後にfail()を書く方法を忘れやすいことであり,異常が投げ出されなければ情報の誤報を招くと予想される.
public class Student {
public boolean canVote(int age) {
if (i<=0) throw new IllegalArgumentException("age should be +");
if (i<18) return false;
else return true;
}
}
放出された異常をテストするには、次の3つの方法があります.
@Test(expected = IllegalArgumentException.class)
public void canVoteExp() {
Student student = new Student();
student.canVote(0);
}
このテストには、例外がメソッドのある位置で投げ出されるが、特定の行にあるとは限らないため、誤差がある.
@Rule public ExpectedException thrown = ExpectedException.none();
次に、予想される例外をより簡単に検証できます.
@Test
public void canVoteExp() {
Student student = new Student();
thrown.expect(IllegalArgumentException.class);
student.canVote(0);
}
予期される例外のプロパティ情報を設定することもできます.
@Test
public void canVoteExp() {
Student student = new Student();
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("age should be +");
student.canVote(0);
}
この方法は異常放出の位置をより正確に見つけることができる.
@Test
public void canVoteExp() {
Student student = new Student();
try {
student.canVote(0);
} catch (IllegalArgumentException e) {
assertThat(e.getMessage(), containsString("age should be +"));
}
fail("expected IllegalArgumentException for non + age");
}
この方法は古くなったが,非常に有効である.主な欠点はcatch文ブロックの後にfail()を書く方法を忘れやすいことであり,異常が投げ出されなければ情報の誤報を招くと予想される.