今回は、テスト時にDBを変更したい場合に流用なActiveProfilesアノテーションについてみていきたいと思います。
@ActiveProfilesとは
ActiveProfilesアノテーションはTest時に流用なアノテーションであり、Test時にProfileを指定できますが、そのアのテーshジョンが@ActiveProfilesです。
つまり、開発用DBとテスト用DBを分けて使えるのです。
@ActiveProfiles(profile名)
上記のように使います。
使ってみましょう
テストクラス作成
package com.sample.web.post.service;
import org.junit.jupiter.api.TestInstance;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ActiveProfiles("test")
@SpringBootTest
public class PostServiceTest {
}
- 上記はServiceTestクラスです。
- import org.springframework.test.context.ActiveProfilesを使います。
- @ActiveProfiles(“test”):profile名にtestを指定しています。これにより設定情報を読み込む時「application-test.yml」から読み込みます。
application-test.yml作成

- test/resourcesに「application-test.yml」を作成します。
- これにより、@ActiveProfiles(“test”)が付与されているクラスからはこの設定ファイルを読み込むようになります。
application-test.yml
spring:
profiles:
active: local
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/infotestdb
username: infouser
password: infopass
doma:
dialect: mysql
query-timeout: 60
sql-file-repository: no_cache
- 普通のapplication.ymlと変わりはないですが、テスト時にテストDBを使うために、テストDB(infotestdb)に接続するように書きました。
終わりに
今回は、@ActiveProfilesについて調べてみましたが、DbSetupライブラリも一緒に使う時があります。テストの方針によりますが。
@Profileアノテーションもありますが、それについては機会があれば調べてみることにします!
