質問: TestNGがインタリーブの代わりにテストクラスのメソッドを連続して実行するようにするには? 状況と問題 ----- 私はいくつかのテストクラスを持っていて、それぞれにいくつかのテストメソッドがあります。すべてのテストは、バックグラウンドで同じテストデータベースを使用します。各テストクラスは、データベースの内容を初期化し、いくつかのテストメソッドでテストします。 それぞれのテストを個別に実行すると、すべてが合格になります。しかし、同時にいくつかのテストを実行すると(MavenまたはIDE、IntelliJを使用)、異なるテストクラスのメソッドがインターリーブされて実行されます。第2クラスのデータベース初期化は、第1クラスの開始後、第1クラスのすべてのテストメソッドが実行される前に実行されるので、これらのメソッドは失敗します(データベースには既に第2クラスのデータが含まれています)。 私が試したことのいくつかと、いくつかの詳細 --------------------- 最も簡単な解決策は、TestNGランナーにクラスを連続して実行させることです(つまり、テストクラスのすべてのテストメソッドが終了してから別のクラスのテストメソッドが実行されるまで待つ)。これはできますか? おそらく私のスイートで別のテストとして各クラスを指定することでこれを行うことができますが、これはやりたくありません。これは、不器用でエラーのあるテストクラスを追加するたびにスイートに何かを追加する必要があることを意味します-prone。 メソッドがまだ(ただし同時にではありませんが)間違った順序で実行されるため、何かを並列化しないように(例えば、スレッド数を1に設定する、または並列実行を無効にする) 1つのオプションは、各テストクラスに異なるデータベースを使用することですが、JPAとGuiceを使用してこれを行う簡単な方法はありません。 私は現在DBUnit、Unitilsなどを使用していません。私はこれらのツールをよく知っていませんが、私は自分の問題を解決しないという印象を受けました。 私は、各テストクラスでデータベースを初期化するためにJPAを使用しています(つまり、エンティティオブジェクトを作成し、それらを保持しています)。
回答: ここにも同様の問題がありました。私は、グループごとのインスタンス= "真"が解決策になると思います。