2017-08-15 3 views
0

私はTestSuiteに2種類の注入用Beanを提供しています。これは、アノテーションを付けてプロフィールを設定している限り、機能します。@RunWith(SpringJUnit4ClassRunner.class)を持つプロファイル

@ActiveProfiles(profiles={"a"})

@ActiveProfiles(profiles={"b"})しかし、私は

私の注釈が

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = {AConfig.class, BConfig.class }) 
@PropertySource("classpath:/application.properties") 
@TestPropertySource(locations = {"classpath:/application.properties"}) 
public abstract class AbstractTestIT { 
    ... 
} 

そしてapplication.propertiesの内容のように見えるファイルプロパティソースからそれを設定することができないようでは

spring.profiles.active="a" 
です

依存関係が満たされていない

前述のように、上記のように@ActiveProfilesの設定が正しく動作しています。

それはほとんどかのようだ。これは、あまりにも長い間、私はアノテーションで私のプロフィールを設定して働く@RunWith(SpringJUnit4ClassRunner.class)

+0

ELを使用して、実際にテストのいずれかのプロパティにアクセスできるかどうかを試してみましたか?それは、プロパティファイルがロードされているかどうかを確認します – Plog

答えて

1

でPropertySourceおよび/またはTestPropertySourceは動作しません。

期待されています。

ActiveProfilesは、spring.profiles.activeプロパティに依存しません。

ActiveProfilesテストクラスの のApplicationContextをロードするときにアクティブビーン定義プロファイルを使用すべき を宣言するために使用されるクラスレベルの注釈です。

そしてvalue属性の別名ですprofiles属性を有効にするテスト

Bean定義プロファイルのために有効にするには、プロファイル(複数可)で評価される必要があります。

spring.profiles.activeプロパティは使用しません。

spring.profiles.activeプロパティは、ユニットテストコンテキストではなく、アプリケーションの全体構成でアクティブなプロファイルを指定します。

+0

答えをありがとう。 '' 'application.properties'''ファイルにデフォルトのプロファイルを提供し、その後CIで実行されたとき、そのプロファイルをenvでオーバーライドします。どのように私はこの同じ結果に達することができますか? –

関連する問題