Exception を throw する可能性のある method のテストを書く時今までは
@Test(expected = NantokaException.class)
とアノテーションをつけたり
try { nantokaService.doNantoka(); } catch (NantokaException e) { assertThat(e.getMessage()).isEqualTo("Nanka"); }
として確認していたけど、前者は exception の中身を確認することはできないし後者は exception が発生しなかった場合にスルーされてしまうって問題があってちゃんと確認したいなら両方書くとかしてた。
んで、java8以後 + 最近のassertjだともっといいやり方あるよーって教えてもらって下記のように書けることを知った。
assertThatThrownBy(() -> nantokaService.doNantoka()) .isInstanceOfSatisfying(NantokaException.class, e -> { assertThat(e.getMessage()).isEqualTo("Nanka"); });
シュッとしてて良い。