私は統合テストを書くために を使用しますSpringJUnit4ClassRunner
。また、@DirtiesContext
コンテキストを壊れた状態のままにして、問題なく動作するテストにも を使用します。
しかし、今では、静的イニシャライザで重要な SystemProperty を設定するテストがあり、それが Spring コンテキストで使用されます。これも、テストが単独で実行される場合は正常に機能します。しかし、他のテストと一緒にテストを実行すると、Spring コンテキストはそのプロパティ設定なしで既に作成されており、新しいテストによって再利用されます。
テストで Spring コンテキストを強制的に新規作成し、変更されたシステム プロパティを使用するにはどうすればよいでしょうか?
ベストアンサー1
Spring 4.2以降では、ダーティーコンテキストアノテーションは次の新しいフェーズをサポートします。前のクラス、各テスト方法の前そして前のメソッドたとえば、次のように実行できます。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(...)
@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD)
public class MyTest {
..
}