Eclipse JUnit - 在Eclipse窗口中看到"initializationError"的可能原因

lix*_*onn 52 java eclipse junit

我知道这个问题非常普遍,但我没有找到任何关于为什么会出现此错误的提示.在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);
}

}
Run Code Online (Sandbox Code Playgroud)

编辑:对不起在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
Run Code Online (Sandbox Code Playgroud)

Mat*_*ell 46

你可能遇到了两个问题之一:

1)您使用的是JUnit 4.11,它不包含hamcrest.将hamcrest 1.3库添加到类路径中.

2)你的类路径上有hamcrest 1.3,但你的类路径上有另一个版本的junit或hamcrest.

对于背景,junit pre 4.11包括hamcrest 1.1的减少版本.4.11删除了这些类.


JAC*_*ACH 40

对我来说这是一个愚蠢的错误.我无意中将测试设置为私有而非公开:

@Test
private void thisTestWasCausingProblems() {
...
}
Run Code Online (Sandbox Code Playgroud)

应该是的

@Test
public void thisTestIsOK() {
...
}
Run Code Online (Sandbox Code Playgroud)

  • 忘记声明方法的范围会导致同样的问题。将方法声明为 public 为我修复了它。 (2认同)
  • 使用`static`方法也会导致此错误. (2认同)
  • @Before 方法也有同样的问题。节省了一天! (2认同)

小智 18

试试"Project> Clean ..." - 似乎是Eclipse中许多问题的解决方案!


fri*_*mle 9

对我来说,它是一个staticJUnit注释方法中缺少的关键字,例如:

@AfterClass
public static void cleanUp() {
    // ...
}
Run Code Online (Sandbox Code Playgroud)


Luk*_*uke 5

当我用@Ignore注释类时我收到了这个错误,我尝试通过右键单击它来运行特定的测试.删除@Ignore修复了问题.