猫が綴る雑多なブログ

jUnitで例外の中身をテストする

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>であることが確認できます

これにより、発生する例外のcausemessageが意図したものであることがテストできます

独自例外の独自フィールド

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を設けるのであればそれを使用するくらいかと思います。

参照先


ブログランキング・にほんブログ村へに参加しています。 猫が綴る雑多なブログ - にほんブログ村 にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ IT技術メモへ

ブログランキング・にほんブログ村へに参加しています。 PVアクセスランキング にほんブログ村 猫が綴る雑多なブログ - にほんブログ村 にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ IT技術メモへ



コメントはこちらからお寄せください