LoginSignup
4
5

More than 3 years have passed since last update.

Spring Bootで、単体テスト実行時にFlywayを起動しない方法

Last updated at Posted at 2021-01-18

はじめに

現在のプロジェクトで、 SpringBootFlyway を使用していますが、
テスト実行時(当プロジェクトでは Gradleを使用しているため、 ./gradlew test )に、
FlywayMigrate が走ってしまう現象がありました。
その時の解決方法の一つになります。

どのような解決をしたのか

ご存知の方からしたら当たり前のことかもしれませんが、
SpringBoot はテスト実行時に、設定ファイルの優先順位が変わります。
具体的には、下記のような構成だとして、

/project
 ├── build.gradle
 ├── gradlew
 └── src
     ├── main
     │   ├── com
     │   │    └── ...
     │   └── resources
     │       └── application.yml
     └── test
         ├── com
         │    └── ...
         └── resources
             └── application.yml

jarファイルなどで実行した場合は src/main/resources/application.yml を読み込みますが、
テスト実行時は src/test/resources/application.yml を読み込んでくれます。

この辺りは下記記事がより詳細に説明してくださってるので、そちらを参照ください。
Spring Boot - テスト時に読み込むDBを変更する

上記の特性を利用し、 src/test/resources/application.yml 側の設定ファイル(テスト時の設定ファイル)に、
Flywayを無効化する下記記述を追加しました。

spring:
  flyway:
    enabled: false

最後に

知っている方からしたらなんてことないことですが、知らない方からしたら若干のハマりポイントではないでしょうか。
そのため、覚書としても記事を記述させていただきました。

短いですが以上です。ありがとうございました。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5