私は、SpringコンポーネントのPowerMock @PrepareForTest
注釈を使用しているSpring統合テストで特定のクラス(MyTest
としましょう)を持っています:@PrepareForTest(MyComponent.class)
。これは、PowerMockがいくつかの変更を加えてこのクラスをロードすることを意味します。問題は、私の@ContextConfiguration
がスーパークラスに定義されており、これはMyTest
で拡張され、ApplicationContext
は異なるテストクラス間でキャッシュされるということです。今すぐMyTest
が実行された場合、PowerMockのバージョンはMyComponent
になりますが、そうでない場合、@PrepareForTestなしで別のテスト用にコンテキストがロードされるため、テストは失敗します。テストクラスの前後でApplicationContextをダーティにします
私がしたいことは、MyTest
の前に自分のコンテキストをリロードすることです。私も、このテストが行われた後、コンテキストをリロードしたい場合、私は
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
しかし、何を経由していることを行うことができますか?だから私はPowerMockの修正なしで再びMyComponent
を清潔にするでしょう。 BEFORE_CLASS
とAFTER_CLASS
の両方を実行する方法はありますか?今の
I以下のハックでそれをやった:MyTestというの
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
、その後
/**
* Stub test to reload ApplicationContext before execution of real test methods of this class.
*/
@DirtiesContext(methodMode = DirtiesContext.MethodMode.BEFORE_METHOD)
@Test
public void aa() {
}
/**
* Stub test to reload ApplicationContext after execution of real test methods of this class.
*/
@DirtiesContext(methodMode = DirtiesContext.MethodMode.AFTER_METHOD)
@Test
public void zz() {
}
それを行うにはきれいな方法があるかどうか、私は疑問に思って?
別の質問として、完全なコンテキストではなく特定のBeanのみをリロードすることは可能ですか?
なぜあなたは*試験前ダーティコンテキスト*をマークしたいですか? – Raedwald
私は@PrepareForTest(MyComponent.class)が動作するように、MyTestクラスのコンテキストをリロードしたいと思います。 – dty