理系学生日記

おまえはいつまで学生気分なのか

特定の例外が発生することを確認するユニットテスト

Perl でいう dies_ok (See: Test::Exception - Test exception based code - metacpan.org)的なユニットテストだが、JUnit 4 を使ってるんだったら @Test アノテーションでできる。

@Test(expected=FileNotFoundException.class)
public void testParseNotFound() throws Exception {
        String filePath = "resource/notfound.log";
        LogParser parser = new LogParser();
        parser.parse( filePath );
}

@Test アノテーションはオプションで expected 要素を記述することができ、ここに記述した Throwable の子クラスがテストメソッド中で投げられたときにテストが成功となる。
他のテスト内容はメソッド中に書くのに、なんで例外だけはアノテーションでテストするんだよみたいな話はない。考えてはいけない。心を無にして悟りを開こう。