概要と目的
JUnitを書く上で、想定通りに例外が発生することを確認することがあると思います
その際の確認方法を記載します
確認方法
検証対象メソッド
public void checkInt(String intStr){
try {
Integer.parseInt(intStr);
}catch (NumberFormatException e){
throw new IllegalArgumentException("引数が数値ではありません " + intStr);
}
}
シンプルな記載方法
発生する例外を記載して、想定した型の例外が発生することを確認
@Test
に追加で、発生する例外クラスを指定する
@Test(expected = IllegalArgumentException.class)
public void 例外が発生することを確認(){
new TestTarget().checkInt("a");
}
この場合、想定する例外が出なかったらテストとしてはエラーとなる
例外の中身を確認する方法
- 上記シンプルな記載方法に加えて以下実装を追加
- 想定例外をキャッチして、例外の中身を精査
- 精査後キャッチした例外を投げる
- わざわざ
fail()
を記載しなくてもこれで十分
- わざわざ
@Test(expected = IllegalArgumentException.class)
public void 例外中身を確認() {
try {
new TestTarget().checkInt("a");
} catch (IllegalArgumentException e) {
assertEquals("引数が数値ではありません a",e.getMessage());
throw e;
}
}