1. ホーム
  2. java

[解決済み] Spring-boot の統合テスト用デフォルトプロファイル

2022-09-11 02:49:13

質問

スプリングブーツを利用する Springのプロファイル を利用しており、例えば環境ごとに別々の設定をすることができます。 私がこの機能を使用する方法の1つは、統合テストで使用されるテストデータベースを設定することです。 しかし、独自のプロファイル 'test' を作成し、各テストファイルで明示的にこのプロファイルを有効にする必要があるのでしょうか? 現在、私は以下の方法でそれを行っています。

  1. src/main/resourcesの中にapplication-test.propertiesを作成します。

  2. そこにテスト固有の設定を書きます(今はデータベース名だけです)。

  3. すべてのテストファイルでインクルードします。

    @ActiveProfiles("test")
    
    

もっとスマートで簡潔な方法はないでしょうか?たとえば、デフォルトのテストプロファイルのような?

編集1:この質問はSpring-Boot 1.4.1に関するものです。

どのように解決するのですか?

私が知る限りでは、あなたの要求に直接対応するものはありません。

独自のテストアノテーションを使用することができます。 メタアノテーション を構成する @SpringBootTest@ActiveProfiles("test") . そのため、専用のプロファイルは必要ですが、プロファイルの定義がすべてのテストに散らばることは避けなければなりません。

このアノテーションは、デフォルトでプロファイル test で、metaアノテーションを使用してプロファイルを上書きすることができます。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@SpringBootTest
@ActiveProfiles
public @interface MyApplicationTest {
  @AliasFor(annotation = ActiveProfiles.class, attribute = "profiles") String[] activeProfiles() default {"test"};
}