59

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

JUnit4.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
4

26 に答える 26

52

おそらく2つの問題のうちの1つがあります。

1)ハムクレストを含まないJUnit4.11を使用しています。hamcrest1.3ライブラリをクラスパスに追加します。

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

背景として、junit pre 4.11には、hamcrest1.1の縮小バージョンが含まれていました。4.11はこれらのクラスを削除しました。

于 2013-03-03T21:57:39.847 に答える
51

私にとってそれはばかげた間違いでした。誤ってテストをパブリックではなくプライベートに設定しました:

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

あるべきだった

@Test
public void thisTestIsOK() {
...
}
于 2015-02-18T17:03:06.313 に答える
20

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

于 2014-08-11T17:33:32.193 に答える
10

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

@AfterClass
public static void cleanUp() {
    // ...
}
于 2014-11-04T04:43:25.017 に答える
6

クラスに@Ignoreの注釈が付けられていて、それを右クリックして特定のテストを実行しようとしたときに、このエラーが発生しました。@Ignoreを削除すると、問題が修正されました。

于 2016-05-11T20:37:50.297 に答える
4

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

Eclipseを使用している場合は、エラーの上をクリックして、すぐ下の[Failure trace]ウィンドウを確認することで、適切な説明を得ることができます...これが本当の問題を見つけた方法です。

于 2014-11-03T22:02:13.143 に答える
3

また、すべての@Before-、@After-、およびその他のJUnit注釈付きメソッドがとして宣言されていることを確認してくださいpublic。私はprivate問題を引き起こしたと宣言してもらいました。

于 2017-12-07T11:37:05.890 に答える
2

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

@Rule
private TemporaryFolder folderRule;

公開します。

于 2016-11-24T16:10:52.973 に答える
1

私にとって、それはテストメソッドの「リターンタイプ」によるものでした。それは「ボイド」でなければなりません

于 2015-08-07T06:45:34.930 に答える
1

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

@RunWith(SpringJUnit4ClassRunner.class)

これで私の問題は解決しました

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
于 2015-08-16T03:24:05.637 に答える
1

同じ問題が発生しました。Excelパスの問題であった場合と、@Testアノテーションが欠落していた場合です。

于 2015-09-28T10:31:59.317 に答える
1

私は同じ問題と同じメッセージを持っていました。hamcrest-all-1.3.jarアーカイブをJavaBuildingPathにインポートすることで、修正することができました。JUnit4.12バージョンを使用しています。

于 2016-03-26T03:26:26.190 に答える
1

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

于 2016-07-26T07:39:48.023 に答える
1

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

于 2018-01-16T07:10:11.160 に答える
1

私の場合、テストケースに次のインポートがありました。

import org.junit.jupiter.api.Test;

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

import org.junit.Test;

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

于 2019-07-04T20:35:40.823 に答える
1

これが役立つ場合は、Junit5を使用していましたが、@ RunWith(SpringRunner.class)はimport org.springframework.test.context.junit4.SpringRunnerを指しており、これが問題を引き起こしていたため、初期化エラーが発生していました。私はこれを修正し、それは機能しました。

于 2019-09-01T02:36:04.327 に答える
0

同じ問題が発生しました...「test」としてJUnit依存関係スコープを持つMaven構築ツールを使用していて、@Testメソッドがメインモジュールにありました。

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

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

于 2015-04-27T19:25:51.353 に答える
0

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

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

于 2015-09-18T08:28:35.587 に答える
0

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

于 2016-02-18T14:16:21.333 に答える
0

Junit4.11はSpringTestフレームワークでは動作しません。また、このリンク「Spring + Junitを使用する場合のInitializationError」では、EclipseでjunitinitalizationErrorをデバッグする方法について説明しています。

于 2016-09-17T00:58:38.303 に答える
0

xtend言語(または型推論を伴う他のJVM lang)を使用していて、戻り型を明示的に定義していない場合は、最後の式のために非void型に設定され、JUnitが失敗する可能性があります。

于 2016-10-19T13:00:49.937 に答える
0

私は別の失敗の痕跡を手に入れましたが、将来の訪問者がお気に入りの検索エンジンを使用するために:

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

于 2017-01-19T11:53:37.650 に答える
0

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

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

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

于 2017-09-12T10:16:27.213 に答える
0

私の場合、テストメソッドに誤ってパラメータを追加したため、初期化エラーが発生しました。

于 2018-01-03T02:54:37.123 に答える
0

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

于 2019-02-25T17:35:51.210 に答える
0

私の場合、機能(キュウリ)ファイルを保持している正しいパッケージを指していないことが原因でした。これは、パスの指定が間違っている場合でした。以下のコードスニペットを参照してください。

import org.junit.runner.RunWith;

import io.cucumber.junit.CucumberOptions;
import io.cucumber.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(
        
    features = "src/test/features",
    glue = "stepDefinitions"
        
        )

以下は、JUnitエラーのスクリーンショットです。JUnitランナーエラー

以下は、コンソールのスタックトレースです。

ここに画像の説明を入力してください

最終的な解決策は、機能ファイルが保存されている正しいパッケージへのパスを変更する必要があったことです。

以下の修正されたコードスニペットを参照してください。

package cucumberOptions;

import org.junit.runner.RunWith;

import io.cucumber.junit.CucumberOptions;
import io.cucumber.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(
        
    features = "src/test/java/features",
    glue = "stepDefinitions"
        
        )

public class TestRunner {

}
于 2021-01-27T12:55:02.373 に答える