テスト用の設定を分ける – @ActiveProfiles

今回は、テスト時に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アノテーションもありますが、それについては機会があれば調べてみることにします!

コメントを残す