1. ホーム
  2. java

[解決済み] Springテストで環境変数やシステムプロパティを設定するには?

2022-10-19 10:41:18

質問

デプロイされた WAR の XML Spring 構成をチェックするテストをいくつか書きたいと思います。残念ながら、いくつかのBeanは、いくつかの環境変数またはシステムプロパティが設定されていることを必要とします。ContextConfigurationを使用して便利なテストスタイルを使用する場合、Spring Beanが初期化される前に環境変数を設定するにはどうすればよいですか?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:whereever/context.xml")
public class TestWarSpringContext { ... }

アノテーションでアプリケーションコンテキストを構成しても、スプリングコンテキストが初期化される前に何かできるフックが見当たりません。

どうすれば解決するのでしょうか?

Systemプロパティは、静的イニシャライザで初期化することができます。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:whereever/context.xml")
public class TestWarSpringContext {

    static {
        System.setProperty("myproperty", "foo");
    }

}

静的イニシャライザーのコードは、springアプリケーションのコンテキストが初期化される前に実行されます。