情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Eclipse+TestNG:デバッグ実行すると応答無しになってしまう原因と対策

Eclipse (60) TestNG (3)

EclipseのTestNGプラグインを使って、テストをデバッグ実行すると、Eclipseが動かなくなり(応答なし)、何もできなくなってしまいました。

これについて調べたことや、自分が行った対策をメモしておきます。

問題

EclipseのTestNGプラグインを「デバッグ」で実行したとき、Eclipseの応答が無くなり、何も出来なくなってしまいました。

何度実行しても再現され、応答無しになったとき、Eclipseの右下に「57%」と表示されるのが特徴でした。

とりあえずTestNGのプロセスを停止すればEclipseの応答は復活します。このとき次のエラーが表示されます。

Couldn't countact the RemoteTestNG client. Make sure you don't have an older version of testng.jar on your class path.

Reason:
Timeout while trying to contact RemoteTestNG.

57%問題

同じ57%で停止してしまうと言う問題は、TestNGプラグインの作者も把握しているらしく、その原因や対策はこちら。

  • プロジェクトに余計なtestng.jarが存在していると発生するので削除する。
  • プロジェクトのプロパティの「TestNG」にある「Use project TestNG jar」をはずすと解決するかもしれない(前項と似たような理由)

しかし、私の場合はどちらの方法でも解決しませんでした。また、私の場合は57%と表示されたりされなかったり、10%で表示が止まることもありました。

「デバッグモードだけ」がポイント

冷静に考えてみると、上記二つの問題は、「デバッグ実行」ならではの原因ではない気がしました。通常実行しても同じ問題が発生するのではないか、と。

さらに調べてみると、「[testng-users] Re: Recent updates ("57% freeze" and "Guice 3 dependency") - Craig - com.googlegroups.testng-users - MarkMail」というページが見つかりました。

これによると、Java Exception BreakPointに設定してあった「NumberFormatException」を削除したら動いたようです。

解決策1

というわけで、私もいろいろ設定してあったException BreakPointのうち、「ArrayIndexOutOfBoundsException」を無効にしたところ、上手く動作しました

つまり、testng.jarの内部で実行が一時停止してしまっていたようなのです。

解決策2

ここまでは、参考資料をヒントに発見することができました。

ただ、これではException BreakPointを満足に使えなくなってしまうので、より詳細に調べることにしました。

、ArrayIndexOutOfBoundsExceptionの場合は「org.testng.internal.remote」パッケージのクラスでArrayIndexOutOfBoundsExceptionが検出されてしまっていたようなので、ArrayIndexOutOfBoundsExceptionにしかけたBreakpointのプロパティを開いて、「Filtering」にある「Add Package...」ボタンをクリックし、「org.testng.internal.remote」と入力して、追加し、チェックボックスをはずすことで、org.testng.internal.remote」パッケージのクラスでは、ArrayIndexOutOfBoundsExceptionのException BreakPointが発動しないように設定しました

これでもうまくTestNGプラグインを使ったデバッグ実行がちゃんと動くようになりました。

それにしても、TestNGがそのライブラリ内部でRuntimeExceptionを握りつぶしているのはどういうことなんでしょう。

参考資料

コメント(0)

新しいコメントを投稿