jUnitで例外の中身をテストする
jUnitで例外の中身(Messageやその他独自定義のフィールド値)を検査する方法の備忘録
例外とその内容のテスト
@Test
public void testThrowable(){
assertAll(
() -> {
IllegalArgumentException iae = assertThrows(
IllegalArgumentException.class,
()->{
testTargetMethod();
}
);
assertEquals("expected message", iae.getMessage());
}
);
}
肝は、assertThrows(Classが戻り値に発生した例外を返すという点です。
jUnitのJavaDocを参照すると戻り値が<T extends Throwable>であることが確認できます
これにより、発生する例外のcauseやmessageが意図したものであることがテストできます
独自例外の独自フィールド
class MyException extends RuntimeException {
public int limit;
public MyException(int limit){
super();
this.limit = limit;
}
}
class MyExceptionTest{
@Test
public void testMyExLimit(){
int val = 27;
assertAll(
() -> {
MyException throwed = assertThrows(
MyException.class,
() -> {
throw new MyException(val);
}
);
assertEquals(val, throwed.limit);
}
);
}
特段変わったことはなく、getterを設けるのであればそれを使用するくらいかと思います。
猫が綴る雑多なブログ
RSS配信中