2017-06-12 13 views
1

testenvironmentの起動時に@Scopeを使用せずにコンポーネントのスコープを変更することはできますか?私たちは、テスト時にのみ必要@ScopeでサービスをpoluteしたくないSpringBootのテストスコープの変更

@Service 
@Scope(${service.scope}) 
public class MyService{} 

test.properties

service.scope=prototype 

prod.properties

service.scope= 

。 テストでBeanのスコープを変更するより良い方法はありますか?私たちはスプリングクラウドを持っていないので、RefreshScopeを使ってスコープをリフレッシュすることはできません。

+0

なぜテストの範囲を変更する必要がありますか?テストでクリーンなアプリケーションコンテキストが必要な場合は '@ DiritesContext'を試しましたか? –

+0

複数のテストを並行して実行し、テストが互いに干渉しないように注入されたパスを変更したいとします。シングルトンを持っているなら競争条件があります。 –

答えて

0

悲しいことに私のソリューションは、この特定の質問でテスト環境の範囲を変更する唯一の「クールな」ものだと思います。

ありがとうございました@DirtiesContext(ダーレンに感謝:))私はすべてのテストの範囲を変更する私の問題のためのトリックを行います。シーケンシャルモードでは少し長く実行されますが、並列では正常に動作します。

@Service 
@DirtiesContext(classMode=ClassMode.AFTER_EACH_TEST_METHOD) 
public class MyService{} 
関連する問題