これは、Eclipse エディターのスナップショットです。テストと JUnit タブが表示されます。テストを実行しようとすると、Terminated と表示されます。
ここで何が起こっているか知っている人はいますか?
Not sure if your problem is already solved.
I had a similar issue which got solved when I corrected the Project
-> Properties
-> Java Compiler
-> JDK Compliance settings
.
I had a conflict between 1.5 and 1.6. When I reverted back to 1.5 (which was the current active JRE), my JUnits started working again.
1 つの可能性は、Eclipse の JUnit ランナーがメソッドの存在によって混乱しmain
、テスト メソッドではなくそれを実行していることです。
main
メソッドをコメントアウトしてみてください。まったく存在しないはずです、IMO。
TestSuite
(ちなみに、メイン メソッドは私には正しく見えません。単体テスト クラスをパラメーターとしてインスタンス化すると思っていたのですが、テスト対象のクラスを指定しているようです。テストが実行されていない理由を説明する「テスト」メソッド...)
実行動作を手動で定義します。右クリック->[名前を付けて実行]->[構成の実行] :
次に、テストケースのすべての詳細(テストクラス、テストメソッド、クラスパス、junitバージョン、JVM引数など)を定義できます。
すでに述べたように、main メソッドを削除すると役立つ場合があります。私の記憶が正しければ、Juni3 である TestCase から拡張する特定の理由はありますか? @Test アノテーションを使用して Junit 4 を試しましたか
例えば:
@Test
public void testSomething() {
//you stuff
}
私の場合、リファクタリングを行ったのに .classpath が更新されず、コンソールに無効なクラスに関するエラーが表示されていました。クラスパスファイルを更新した後、すべてが再び機能し始めました。
クラスパスにjunitの2つのjarファイルがあるときに私に起こりました。1 つの jar は、セレン サーバー スタンドアロン内に隠されていました。クラスパスから他のjarを削除し、ランタイムがセレンサーバースタンドアロンでjunit jarを使用できるようにすることで、問題を修正しました。クラスの競合または Java バージョンの警告に関するメッセージがコンソールに見つかりませんでした。
テストが実行されていないことを確認したときに、コンソールを開いたところ、次のエラーが表示されました。
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.3 jreに対してユニットテストを構築していることに気付きました。1.6 に対して単体テストをビルドすると、テストが実行されました。あるいは、1.3 に対して junit を構築 (または発見) できたので、調子が良かったかもしれません。私は最も抵抗の少ない道を歩みました。
これが役立つかどうかはわかりませんが、私の場合、Junitが最終的に応答を開始する前に、プロジェクト構成Mavenを更新する必要がありました->プロジェクト構成を更新する必要がありました
私の場合、テストの対象として識別されていない内部クラスを使用していました。修正は、そのクラスを次のような静的内部クラスにすることでした。
public class MyClass { //... class I wanted to test
}
この内部クラス (つまり、同じファイル内) は、MyClass のテストに使用されますが、静的でない限り、Eclipse はそれを検出しません。
public static class MyClassTest { // ....
}