私のプロジェクトにJUnitテストクラスがありますが、これは徐々に更新されています - 数週間おきにテストを追加し、テストのコードを変更することがあります。単体テストクラスが古いバージョンで動作しています
驚いたことに、eclipse JUnit Runner 4を使用してテストクラスを実行すると、新しいコードではなく古いコード(更新前)が実行されます。コードを変更したり、テストを追加したり削除したりすることはできますが、それでも古いコードは実行されます。
私は問題を特定して、今書いた単なるテストを実行しようとしましたが、スタックトレースなしで悪名高い "Unrooted tests"エラーが発生しました。
私はいくつかの研究を行なったし、ここではいくつかの他のスレッドによると、多くの人は、JUnitの3 \のJUnit 4の互換性に関して、この問題が発生したが、これはここにそうではありません - 私はすべてのテストに注釈を付けます@Test
であり、私はTestCase
クラスを拡張していません。
クリーニング/すべてのEclipseプロジェクトのビルドは役に立ちません。 しかし、この問題は、自分のプロジェクトをmvn cleanでインストールしたときにはうまくいきますが、時間がかかりすぎます。 また、クラスの名前を変更すると(Alt + Shift + Rをeclipseで実行)、新しいコードがすぐに実行されますが、元の(有効な)名前に戻すと、古いコードが再び実行されます(WTF?)
ヘルプは高く評価されます。 10x
古いコードを実行している場合は、古いコードがソースに含まれているか、コンパイル済みです。あなたはどこかで古いコードを持っていますか?おそらくクラスパスにある.jarでさえ? – Harald
私はどこかでやると思いますが、Eclipseがそれをコンパイルしたと仮定すると、実行するように指示されたコードを実行するはずのEclipseランナーではありませんか? – KidCrippler
テストランナーが 'target'の下でコンパイルされたクラスを使用しているが、Eclipseコンパイラーが別のフォルダー(デフォルトでは' bin')に出力しているようにEclipseを設定している可能性はありますか? Mavenビルドがなぜこの問題を解決するのか説明できるかもしれません。 – sisyphus