JavaでExceptionが発生する事を検証するテストは以下のように書く事が出来る。
@Test(expected = IllegalArgumentException.class) public void Exceptionの検証() { throw new IllegalArgumentException("このメッセージは検証できない"); }
ただ、このテストケースでは、意図したExceptionが発生する事は検証できるが、そのExceptionの内容の検証を行う事が出来ない。
Exceptionの検証にExpectedExceptionクラスが使えるという情報を貰ったので使い方を確認。
使い方
サンプル
import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import static org.hamcrest.Matchers.endsWith; public class ExpectedExceptionTest { // @Ruleを付加するフィールドはpublicフィールドとする @Rule public ExpectedException expected = ExpectedException.none(); @Test public void ExpectedExceptionを使ったException検証() { // 検証する内容を設定 expected.expect(IllegalArgumentException.class); expected.expectMessage("sample"); // 部分一致検証 expected.expectMessage(endsWith("exception")); // Exceptionが発生する処理を実行 new SampleClass(null); } static class SampleClass { SampleClass(String str) { if ( str == null ) { throw new IllegalArgumentException("sample exception"); } } } }
このコードで、Exception#getMessage()の内容を検証する事が出来る。
なお、ExpectedException#expectMessage(String)メソッドは部分一致の検証である事に注意。
JUnit実践入門にも載ってた。
JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)
- 作者: 渡辺修司
- 出版社/メーカー: 技術評論社
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 273回
- この商品を含むブログ (67件) を見る