Spring Bootでmockitoを使ってテストする

求人
Spring Bootでmockitoを使ってテストする

Spring Bootのgradle.buildで以下があればJUnit,mockito,assertJが使えます。

Spring BootのRESTControllerをJUnit4でテストする」にも書きましたが、今回はサービスクラスで使用しているリポジトリクラスをモックする一般的なテスト方法を書いてみます。

サービスクラスのメソッド内でリポジトリクラス経由でDBにアクセスしています。

DemoServiceTest.java

サービスクラスがテスト対象なので@IngectMocksをつけます。

サービスクラスのメソッドで使用するリポジトリに対して@Mockをつけます。

@BeforeでMockitoAnnotations.initMocks(this);をしておかないと正常にモックが動作しません。

テストメソッドで、whenの引数にメソッドを指定します。thenThrow(new RuntimeException());でランタイムエクセプションをスローさせます。これでcatch句に遷移させることができます。スローさせずに値を返したい場合はthenReturnメソッドを使用します。

以下はサービスクラスです。

when().thenThrow()で注意

findAll()のような引数のないメソッドはthenThrow()されますが、自作のメソッドで引数が存在する場合はany()などを使用する必要があります。

例えば

というようにすると正常に動作しません。この場合、String型の引数なので以下のように記述します。

というようにanyString()を使用します。引数がオブジェクトの場合はany()を使用します。

上記をstaticインポートすればOKです。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA