2016-12-15 8 views
1

私はSpringブートベースのアプリケーション用のjunitsを作成しています。beanはapplication-.propertiesで指定されたいくつかの構成パラメータに依存しています。 私のJUnitの中で、私は、プロファイルを設定している場合、私は豆を生成しています私の設定のクラス、私のJUnitでアプリケーションコンテキストのエラーを検出するspring junit

@Configuration 
public class AppConfig{ 

@Value("${MyProperty}") 
private String myProperty; 

@Bean 
public myBean bean1() throws MyException{ 
    if(myProperty.contentEquals("abc"){ 
    throw MyException("Value abc not allowed for bean1"); 
    } 
} 

では、私は、このシナリオを検出したいと「アプリケーションの起動に失敗した」と言って、それでエラーが出て実行しないで到達私の前の方法または試験方法。

junitが失敗せず、myexceptionも検出できるようにするにはどうすればよいですか。 私が必要とするのは、アプリケーションコンテキストの作成が失敗することですが、私のユニットテストは合格になります。

ありがとうございます!

答えて

0

豆これはあなたのBean定義に直接@ConditionalOnProperty注釈によって制御することができるapplication-.properties

に指定されたいくつかの設定パラメータに依存します。したがって、テストBeanに例外をスローするのではなく、コンフィグが存在しない場合は、全く登録されていないでしょう:

私は春のブートベースのアプリケーションのjunitsを書いています。 application-.propertiesで指定されています。あなたが@ConditionalOnExpression使用できるプロパティにいくつかのSpEL操作呼び出したい場合は、私は豆を生成しています私の設定クラス、

@ConditionalOnProperty(name = "myProperty", havingValue = "'hiThere'") 
@Bean 
public myBean bean1() { 
    //.. 
} 

で:

@ConditionalOnExpression("${myProperty}.contains('ere')") 
@Bean 
public myBean bean1() { 
    //.. 
} 
+0

を私は、プロパティアノテーションの条件を理解し、あなたに感謝提案。 これは、Beanが作成されていなくてもアプリケーションが起動するという別の問題を引き起こします。私はそれを起こさせるべきではありません。 私の理解からは、Beanファクトリメソッドで例外をスローすることによってのみ可能です。 これは私が現在私のコードで行っていることです。私のユニットテストではそれを検出できますか?その場合は – Avis

+0

例外を検出するためにテストメソッドのコンテキストを直接起動する必要があります – dimitrisli

+0

どうすればよいですか?私は単体テストにSpringRunnerを使用します。 – Avis

関連する問題