jUnitで例外の中身をテストする 2023/02/12 08:00 jUnitで例外の中身(Messageやその他独自定義のフィールド値)を検査する方法の備忘録 例外とその内容のテスト MyTest.java @Test public void testThrowable(){ assertAll( () -> { IllegalArgumentException iae = assertThrows( IllegalArgumentException.class, ()->{ testTargetMethod(); } ); assertEquals("expected message", iae.getMessage()); } ); } 肝は、assertThrows(Class, Exceutable)が戻り値に発生した例外を返すという点です。 jUnitのJavaDocを参照すると戻り値が<T extends Throwable>であることが確認できます これにより、発生する例外のcauseやmessageが意図したものであることがテストできます 独自例外の独自フィールド MyOriginalExceptionTest.java 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を設けるのであればそれを使用するくらいかと思います。 参照先 Stack-Overflow