私はテストを並行して実行し、2つのテスト(下記)がインスタンス変数を共有すると競合状態になるのだろうか?私のテストクラスはSpringJunit4ClassRunnerで実行され、2つのテストメソッドa()とb()があり、変数state
は各テストから変更または再割り当てされ、doSomethingWithState()は変数state
を使用してテストに渡します方法。私はmaven-surefire-pluginを知っているので、a()とb()の両方がスレッドに割り当てられ、並列に実行されるメソッドレベルで実行することができます。 はに依存...あなたの正確な状況とコードベース上:並行してjunitテストを実行するときの競合条件
@RunWith(SpringJUnit4ClassRunner.class)
public class TestA {
private Object state;
@Test
public void a() {
stateObjectA();
doSomethingWithState();
assertion();
}
@Test
public void b() {
stateObjectB();
doSomethingWithState();
assertion();
}
private void stateObjectA() {
// do some mocking and setup state
}
private void stateObjectB() {
// do some mocking and setup state
}
private void doSomethingWithState() {
// use the state object and feed into the testing method
}
}
「@ Test」アノテーションはどこにありますか? – dit
OOps ...私はそれを更新しました – peter
[JUnit4はテストメソッドごとに新しいインスタンスを作成します](http://stackoverflow.com/questions/19381352/does-junit-reinitialize-the-class-with-each-test -method-invocation):メソッドごとに 'state'のインスタンスが異なるため、スレッドの干渉はありません。 [Martin Fowlerのブログ記事(http://www.martinfowler.com/bliki/JunitNewInstance.html)も参照してください。 –