これはEclipseエディターのスナップショットです。テストと[JUnit]タブが表示されます。テストを実行しようとすると、「終了」と表示されます。
誰かがここで何が起こっているのか知っていますか?
1つの可能性は、EclipseのJUnitランナーがmain
メソッドの存在によって混乱し、テストメソッドではなくそれを実行していることです。
main
メソッドをコメントアウトしてみてください。そこにあるべきではない、IMO。
(ちなみに、mainメソッドは私には正しく見えません。ユニットテストクラスをパラメーターとしてTestSuite
をインスタンス化すると思っていましたが、テスト中のクラスを指定しているようです。 。テストが実行されていない理由を説明する「テスト」メソッドはありません...)
問題がすでに解決されているかどうかわからない。
Project
-> Properties
-> を修正すると、同様の問題が解決しました。 Java Compiler
-> JDK Compliance settings
。
1.5と1.6の間で競合が発生しました。 1.5(現在アクティブなJRE)に戻すと、JUnitが再び機能し始めました。
すでに述べたように、mainメソッドを削除すると役立つ場合があります。私が正しく覚えていれば、Juni3であるTestCaseから拡張する特別な理由はありますか? @Testアノテーションを使用してJUnit4を試しましたか
例えば:
@Test
public void testSomething() {
//you stuff
}
最初にjunitjarファイルをビルドパスに追加したときに同じ問題が発生しました。 junit.jarファイルをmodulepathセクションではなくJavaビルドパス->クラスパスセクションに追加するようにしてください
クラスパスに2つのjunitの瓶があったときに私に起こりました。 1つのjarがSeleniumサーバースタンドアロン内に隠されていました。クラスパスから他のjarを削除し、ランタイムがSeleniumサーバーのjunit jarをスタンドアロンで使用できるようにすることで、この問題を修正しました。階級闘争またはJavaバージョン警告)に関するメッセージがコンソールに見つかりませんでした。
私の場合、リファクタリングを実行し、.classpathが更新されず、コンソールに無効なクラスに関するエラーが表示されていました。クラスパスファイルを更新した後、すべてが再び機能し始めました。
実行をブロックする別のプロセスがないことを確認してください。私の場合、ビルドワークスペースはスリープ状態で、すべてのjunit実行をブロックしていました。
実行動作を手動で定義します。右クリック-> [実行]-> 実行構成:
次に、テストケースのすべての詳細(テストクラス、テストメソッド、クラスパス、junitバージョン、JVM引数など)を定義できます。
私の場合、テストの対象として識別されていない内部クラスを使用していました。修正は、そのクラスを次のような静的内部クラスにすることでした。
public class MyClass { //... class I wanted to test
}
この内部クラス(つまり、同じファイル内)はMyClassのテストに使用されますが、静的でない限り、Eclipseはそれを検出しません。
public static class MyClassTest { // ....
}
テストが実行されていないのを確認したとき、コンソールを開いて次のエラーが表示されました。
Java.lang.UnsupportedClassVersionError: junit/framework/Test (Unsupported major.minor version 49.0)
at Java.lang.ClassLoader.defineClass0(Native Method)
at Java.lang.ClassLoader.defineClass(Unknown Source)
at Java.security.SecureClassLoader.defineClass(Unknown Source)
at Java.net.URLClassLoader.defineClass(Unknown Source)
at Java.net.URLClassLoader.access$100(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClassInternal(Unknown Source)
at Java.lang.Class.forName0(Native Method)
at Java.lang.Class.forName(Unknown Source)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadTestLoaderClass(RemoteTestRunner.Java:328)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.Java:318)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.Java:313)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.Java:291)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.Java:212)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:196)
さらに調査した結果、使用しているjunitフレームワークが1.6 jreに対して構築されており、1.3jreに対してユニットテストを構築していることがわかりました。 1.6に対して単体テストを作成したとき、テストが実行されました。あるいは、1.3に対してjunitを構築(または発見)でき、良好な状態であった可能性があると思います。私は最も抵抗の少ない道を進んだ。
これが役立つかどうかはわかりませんが、私の場合、Junitが最終的に応答を開始する前に、プロジェクト構成Maven-> updateプロジェクト構成を更新する必要がありました。