私はすべてのSpring ConfigurationsをJavaコードに移行しています。私はコマンドラインスイッチやMavenプロファイルなどに基づいてどのプロファイルを使用しているかを設定したいという問題に遭遇しました...私も、それぞれのテストで同じアノテーションをすべて配置する必要がないようにしたいクラス。これはWebアプリケーションではなく、むしろ機能的なテストスイートです。ここでJava Spring ApplicationContextの設定
は私の試みです:私は私のテストを実行しようとすると、
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CompanyApplicationContextInitializer.class)
は、しかし、私のautowired作品が配置されていない:
public class CompanyApplicationContextInitializer
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(final ConfigurableApplicationContext applicationContext) {
final AnnotationConfigApplicationContext rootContext = new AnnotationConfigApplicationContext();
rootContext.getEnvironment().setActiveProfiles(System.getProperty("spring.profile.active", "local"));
rootContext.register(LocalConfiguration.class, SauceLabsConfiguration.class);
}
}
それから私は、次の注釈を付け私のテストを持っています。私はまさに正しい道を歩いていますか?私のApplicationContextをプログラムで設定するには、このクラスでどのように配線することができますか?第二の注釈にアプリのコンテキストXMLの場所を追加
私はすべての設定オプションを定義したベーステストクラスを避けることを望んでいましたが、私は選択肢がないようです(現在)。私はどのプロファイルがそれぞれのテストクラス(ここではJVMプロパティで簡単に実行されます)でアクティブになっているのを避けることを望んでいましたが、私はそれぞれのテストクラスにContextConfigurationアノテーションを配置することを避けることを望んでいました。それを基本レベルのテストに移動することで、その問題を緩和することができます。 – Scott
@ActiveProfilesアノテーションは、基本クラスで使用でき、すべてのサブクラスに適用されます。さらに、その注釈には、inheritLocationsと呼ばれるものを含む多くのプロパティがあります。 Javadocを参照してください。 –