web-dev-qa-db-ja.com

Eclipse JUnit-Eclipseウィンドウに「initializationError」が表示される原因

私はこの質問がかなり一般的であることを知っていますが、このエラーが表示される理由に関するヒントを見つけていません。 EclipseウィンドウにinitalizationErrorが表示される可能性のある原因は何ですか?長くて役に立たない障害トレースだけでは有用な情報は得られません(ここには含まれていません)。

JUnit 4.11を使用しています

私は次のコードを書きました-それが機能するかどうかを確認するためだけに:

package test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class SimpleTest {

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Test
public void test() {
    assertEquals(15, 15);
}

}

編集:申し訳ありませんが、Eclipseウィンドウでは、実際には「障害トレース」と呼ばれています。

Java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing     at
Java.lang.ClassLoader.defineClass1(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.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
org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.Java:10)
    at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.Java:59)
    at 
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.Java:26)
    at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.Java:59)
    at
org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.Java:26)
    at
org.Eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.Java:33)
    at
org.Eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.Java:25)
    at
org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.Java:48)
    at
org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.Java:38)
    at
org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:452)
    at
org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:683)
    at
org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:390)
    at
org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:197)
Caused by: Java.lang.ClassNotFoundException:
org.hamcrest.SelfDescribing     at Java.net.URLClassLoader$1.run(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)     ... 25 more
50
lixonn

おそらく次の2つの問題のいずれかがあります。

1)hamcrestを含まないJUnit 4.11を使用しています。 hamcrest 1.3ライブラリをクラスパスに追加します。

2)クラスパスにhamcrest 1.3がありますが、クラスパスにjunitまたはhamcrestの別のバージョンがあります。

背景として、4.11より前のjunitには、hamcrest 1.1の縮小版が含まれていました。 4.11はこれらのクラスを削除しました。

46
Matthew Farwell

私にとってそれはばかげた間違いでした。テストを誤ってpublicではなくprivateに設定しました:

@Test
private void thisTestWasCausingProblems() {
...
}

あるべきだった

@Test
public void thisTestIsOK() {
...
}
38
JACH

「プロジェクト>クリーン...」を試してください-Eclipseの多くの問題の解決策のようです!

18
Henrik Schulze

私にとっては、JUnitアノテーション付きメソッドの1つにstaticキーワードがありませんでした。例:

@AfterClass
public static void cleanUp() {
    // ...
}
8
friederbluemle

クラスに@Ignoreアノテーションが付けられたときにこのエラーを受け取り、それを右クリックして特定のテストを実行しようとしました。 @Ignoreを削除すると、問題が修正されました。

5
Luke

私はまったく同じエラーを実験しました。私の問題は、作成したSetUpメソッドが静的として宣言されたことでした。

Eclipseを使用している場合、エラーの上をクリックして、すぐ下にある[失敗トレース]ウィンドウを確認することで、適切な説明を得ることができます。

4
pablo.vix

また、すべての@Before-、@After-、およびすべてのJUnitアノテーション付きメソッドがpublicとして宣言されていることを確認してください。私はprivateとして問題を引き起こしたと宣言しました。

3

この問題は、クラスにプライベートルールがある場合にも発生します。

@Rule
private TemporaryFolder folderRule;

公開します。

2
T3rm1

私にとっては、コモンズロギングと関係がありました。私が使っていたので

@RunWith(SpringJUnit4ClassRunner.class)

これで問題が解決しました

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
1
Anand Rockzz

私の間違いは、テストメソッドの@Testアノテーションを逃したことです。

1
user55926

私にとって、それはテストメソッドの「戻り型」によるものでした。 「ボイド」である必要があります

1
Karthik Murugan

同じ問題と同じメッセージがありました。 Java Building Pathにhamcrest-all-1.3.jarアーカイブをインポートすることで修正できました。 JUnit 4.12バージョンを使用しています。

1
JuanJoRoman

同じ問題が発生しました。一度Excelパスの問題が発生し、それ以外の場合は@Testアノテーションが欠落していました。

1
yogendra

私の問題は、親クラスに@Testメソッドがなかったことです。そこでは、いくつかのユーティリティのみを使用しました。 abstractと宣言したときに機能します。

1
unrein

私の場合、テストケースで次のインポートを行いました。

import org.junit.jupiter.api.Test;

正しいインポートは次のとおりです。

import org.junit.Test;

Junitから古いテストタイプをインポートするだけでなく、正しいタイプを選択してください。

0
sgf

Xtend言語(または型推論を備えた他のJVM言語)を使用していて、戻り値の型を明示的に定義していない場合、最後の式のために戻り値の型が非void型に設定され、JUnitが失敗します。

0
Aykut Kllic

別の失敗トレースを取得しましたが、将来の訪問者がお気に入りの検索エンジンを使用する場合:

私にとっての問題は、Eclipseがテストクラスで単一のメソッドのみを実行することをどういうわけか決定したことでした(ただし、理由はわかりませんでした)。特に、セットアップで何も変更しなかった場合は、実行構成を確認してください。

0
Qw3ry

私の場合、pom.xmlのプロジェクト名を変更したため、新しいターゲットディレクトリが生成され、junitは古いディレクトリのクラスを検索していました。 EclipseでもJUnitのディレクトリを変更する必要があります

Properties -> Java Build Path -> Source (Default output folder)

また、同じウィンドウにリストされているソースフォルダーの一部が以前のディレクトリ名を持っている可能性があるため、確認してください。それらも変更する必要があります。

0
Dawid D

Junit 4.11はSpring Testフレームワークでは動作しません。また、このリンク Spring + Junitを使用する場合の初期化エラー では、Eclipseでjunit initalizationErrorをデバッグする方法について説明しています。

0
jeffery.yuan

私は同じ問題を抱えていました... JUnit依存関係スコープを持つMavenビルドツールを「テスト」として使用し、@ Testメソッドはメインモジュールにありました。

解決するには、1。pom.xmlでJUnit依存関係のスコープタグにコメントを付けました。2.パッケージを再構築しました。3. Testクラスにコンストラクターが1つしかないことを確認しました。

問題は2つに分かれます。1. JUnit依存関係はテストスコープに限定され、@ Testメソッドはメインスコープにあります。2.テストクラスには複数のコンストラクターがあります。

0

私にとって、初期化エラーの原因となったテストメソッドに誤ってパラメーターを追加しました。

0
Stanley

私は同じ問題を抱えていた、私のための解決策は次のとおりです。

Webからjunit.jarファイルのみをインストールしましたが、hacrest-core.jarに関連するこのライブラリはhacrest-core.jarファイルをダウンロードし、プロジェクトに追加したときにすべて正常に動作します。

0
KostasA

Poi.Apache.orgのjunit-4.12.jarをEclipseのBuild Pathに単純に追加しました。私はそれを削除し(プロジェクト、プロパティ、Javaビルドパス、ライブラリ、junit-4.12.jar、削除)、テストクラスでCtrl-1を押した後、Eclipseが「プロジェクト設定を修正」できるようにしました。これ以上の問題はありません! :-)

0
i2B

私にとって、解決策は無効にする必要のあるメソッドの1つであり、ブール値でした。

0
PaN

これが役立つ場合は、Junit5を使用していましたが、@ RunWith(SpringRunner.class)がimport org.springframework.test.context.junit4.SpringRunnerを指していました。私はこれを修正し、機能しました。

0
Divas