Spring Bootでのテストコードの書き方




どうも高妻です。Twitterでもプログラミングのことや暗号通貨のことをつぶやいているのでよかったら覗きにきてください。  

テストコードを書く前の準備

環境

  • Kotlin:1.1.4-3
  • Spring Boot:1.5.6.RELEASE
  • JDK:1.8
  • ORM:Spring Data JPA

下記はbuild.gradleでの設定です。

 

使用するプラグインと準備

自分の場合はbuild.gradleのcompileを下記で設定しています。

  • spring-boot-starter-test:Spring Bootでテストコードを書く場合は導入してください。
  • DBUnit:これを使う場合はspring-test-dbunitとdbunitを使うようにしてください。
  • DbSetup-kotlin:テストデータの投入に使用します。これはKotlinバージョンなのでJavaで書く場合は別のものを導入してください。

テストコードの実装

まずpackageとimportを省略したテストコードが下記になります。それぞれについて一個ずづ説明していきます。

@DbUnitConfiguration

これはDBUnitの設定アノテーションで、テストデータの形式と使用するデータストアについて設定できます。CsvDataSetLoaderは独自に実装したクラスで下記のようになります。

databaseConnectionにはBean名を設定しています。実際のBeanは下記です。このようにDataSourceを渡すことでテストで使用するデータベースを設定することができます。

 

@DatabaseSetup

これはこのクラスでのテスト用データを指定するアノテーションです。パスはtest/resourcesからのパスになります。DatabaseOperation.CLEAN_INSERTはテスト実行前にテーブルを空にしてから毎回テストデータを投入してくれる設定になります。毎回同じ状態でテストするならこの設定にしとくといいと思います。

@TestExecutionListeners、@RunWith、@SpringBootTest

この3つは基本的にはその通り書いて置けば大丈夫です。

  • TestExecutionListeners:テスト時にDIやトランザクションの機能を使えるようにしたものです。
  • RunWith:テストを実行するRunnerを設定できます。
  • SpringBootTest:application.propertiesを読み込むなどのSpring Bootの機能を使えるようにするものです。

上記の詳しい説明は下記リンクを参照してください。

Spring Bootのテストコードで使うアノテーション解説

Matchers

テストしたいメソッドの返り値にはMatchersを使用します。Matchersにはたくさんの比較メソッドがありますが基本的にis()、 not()、sameInstance()などを覚えて置けばいいかと思います。

最後に

この記事で紹介したアノテーションや実装方法を理解すれば他のデータベースや複雑なテストもできるようになるかと思います。

下記リンクにSpring Boot関連の記事をまとめたのでこちらも是非参考にしていただければと思います。

おすすめ書籍

JPAに関しては下記パーフェクトJava EEが非常に詳しく書かれているのでぜひ読んでみてください。







コメントを残す

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