インメモリDBを使用
メリットとしては以下の2点があげられます。
- メモリで実行されるため、アプリケーションを再実行するたびにデータが初期化されること
- 実際のDBをインストールせずに依存関係を追加ができること
@DataJpaTestに基本的に内蔵されているインメモリDBはH2, HSQL, Derby
がありますが、
今回の記事ではH2
を使う方法についてご紹介します。
そのために以下の2点を設定し、テストコードを実行しましょう。
H2の依存関係を追加
・Gradle
dependencies {
testImplementation 'com.h2database:h2:2.1.214'
}
・Maven
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.7.1</version>
<scope>test</scope>
</dependency>
他のバージョンは↓を参考にしてください。
https://mvnrepository.com/artifact/org.hsqldb/hsqldb
schema.sql作成
src/test/resources
の下にテーブルを定義したschema.sql
を追加してください。
ちなみに作成したテーブルにデータを追加する際はdata.sql
を追加し、そこにinsert文を追記しましょう。
物理DBを使用
任意のDBを使用するためにテストクラスに
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
を付与します。
でなると、ご自身のapplication.properties
に設定したPostgresql,MySQLなどの物理DBに対してレポジトリのテストを行います。
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class WordsRepositoryTest {
}