ライブラリのアップグレード (easymock 2.2 -> 2.4) のおかげで、テストがロックアップし始めています。個々のテストでタイムアウトを取りたいのですが、それらすべてです。アイデアは、ロックされたテストを特定し (現在推測しています)、それらを修正することです。
これは、できればスイート全体のレベルで可能ですか? 400 個のテストがあり、これを各メソッドまたは各クラスで行うには時間がかかります。
ライブラリのアップグレード (easymock 2.2 -> 2.4) のおかげで、テストがロックアップし始めています。個々のテストでタイムアウトを取りたいのですが、それらすべてです。アイデアは、ロックされたテストを特定し (現在推測しています)、それらを修正することです。
これは、できればスイート全体のレベルで可能ですか? 400 個のテストがあり、これを各メソッドまたは各クラスで行うには時間がかかります。
suite タグには、time-out 属性を含めることができます。このタイムアウトは、すべてのテスト メソッドのデフォルトとして使用されます。
このデフォルトのタイムアウトは、テスト メソッドごとにオーバーライドできます。
非常に遅いですが、実行jstack -l <PID>
するとスタックダンプが得られます。これを調べて、スタックしている呼び出しを見つけることができます。スタックしていることを確認するために、数回サンプリングすることをお勧めします。
スイート レベルが間違ったアプローチであることが判明した場合 (つまり、タイムアウト制限であまりにも多くのメソッドをマークすることになるため、「ネットワークが広すぎる」)、カスタムIAnnotationTransformer を定義する必要があります。 @Test アノテーションを変更する機会があります (たとえば、setTimout() メソッドを使用)。
(setTimout(0)
タイムアウト ディレクティブをキャンセルします)
「@Test」を検索して「@Test(timeout=)」に置き換えることができます。ロックされたテストを見つけるために機能し、その後元に戻すことができます。