2012-01-24 11 views
2

この質問は寄せ集め突然変異テストフレームワーク(http://jumble.sourceforge.net/可能なクラスローダの問題

に関するされ、私は自分の仕事に取り組むプロジェクトにまぜこぜ取得しようとしています。 私はこのプロジェクトの一つのクラスに寄せ集めを実行したのだが、いくつかのクラスに変異を行いますが、私はantタスクとそれらのテストクラスを実行すると、彼らはOK実行にもかかわらず、いくつかの他のものに対しては

"test class is broken"

を伝えます。

私は何がうまくいかないのかを知ろうとしていて、eclipseでデバッグモードでジャムを実行し始めました。 これらのクラスをデバッグすると、私はjunitクラスTestResultのインスタンスフィールドに入るので、jumbleが "テストクラスが壊れている"と伝えるので、junitがテストクラスを実行するときにエラーと失敗の説明を見ることができます。テストクラスが壊れていると言う理由を教えてください。何が起こっているのかを知るためにデバッグする必要があります。私が観察した問題とエラーの詳細は、失敗したテストの結果であり、ジャンパーは次のようなものです:

(私が働く会社の法的規制のために特定のコードを投稿することはできませんが、

クラス "Forwarder"では、デバッグモードでJumbleを実行し、スムーズに実行して突然変異を完璧にします。これは私が一番驚いているケースです。なぜなら、これはAntタスクのジャンクを実行すると「テストクラスが壊れています」と報告されますが、Eclipseのデバッグモードでは正常に動作します。テストクラスを実行しているときに、クラスアクションの

、および他の多くは、デバッグモードでエラーが発生すると、エラーの説明を検査する際、エラーが私はJUnitの上でそのクラスを持っている

java.lang.ClassNotFoundException: org.junit.rules.ExpectedException.

ですjarとそのパスは、EclipseのデバッグモードとAntタスクで使用できます。 また、このクラスは、依存関係を持つセレニウムフレームワークのjarファイルにあります 私は、クラスローダーがロードするクラスのバージョンを決めることができない可能性があることを押しました。確信はないけど。

モジュールの場合、私は同じことをします。テストが妨害によって実行され、実行が終了すると、TestResult junitクラスで使用可能なエラーメッセージを調べます。このクラスについては、次のようになります。

java.lang.LinkageError: loading constraint violation: loader "com/reeltwo/jumble/mutation/[email protected]" previously initiated loading for a different type with name "org/hamcrest/Description" defined by loader "sun/misc/[email protected]"

このエラーは私には驚いています。 Jumbleには独自のクラスローダーがあり、どういうわけか私のトラブルの原因になるかもしれません。

私は本当に助けのいずれかの種類を理解するだろう、 マルコス

答えて

0

ゴチャゴチャはあなたの問題のいくつかの原因である可能性があり突然変異を挿入するためにカスタムクラスローダを使用しています。

classnotfound例外の原因となる可能性のある独自のバージョンのjunitも組み込まれています。もっと多くの情報がなければ、確かに言うのは難しいです。

Jumbleメーリングリストで開発者に質問したり、PITに代わりにhttp://pitest.orgを試してみることができます。

PITは、クラスローダーを使用する代わりに計測APIを使用して突然変異を挿入しますが、JUnitは埋め込まれず、一般的にははるかに高速です。私はそれを書きましたので、おそらく非常に偏っています。

関連する問題