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 

你可能有两个问题之一:

1)您正在使用JUnit 4.11,其中不包括hamcrest。 将hamcrest 1.3库添加到你的类path中。

2)你的类path上已经有了1.3的hamcrest,但是你的classpath还有另一个版本的junit或者hamcrest。

为了背景,junit pre 4.11中包含了一个Hamcrest 1.1的精简版。 4.11删除这些类。

对我来说这是一个愚蠢的错误。 我无意中将testing设置为私有而不是公开的

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

应该是的

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

只要尝试“项目>清洁…” – 似乎是Eclipse的许多问题的解决scheme!

对我来说,这是一个JUnit注释方法中缺less的static关键字,例如:

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

当我用@Ignore注解这个类时,我收到了这个错误,我试图通过右击它来运行一个特定的testing。 删除@Ignore修复了这个问题。

我已经尝试了完全相同的错误。 我的问题是我创build的SetUp方法被声明为静态的。

如果使用eclipse,可以通过点击错误上面的描述来获得一个好的描述,然后检查下面的Failure trace窗口。这就是我发现真正的问题的原因!

对我来说,这是由于testing方法的“返回types”。 它应该是“无效的”

对我来说,这与公用日志有关。 自从我使用

 @RunWith(SpringJUnit4ClassRunner.class) 

这解决了我的问题

 <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> 

我有同样的问题:一旦它是Excel的path问题和其他时间缺less@Test注释。

我只是有同样的问题和相同的消息。 我可以通过导入到Java Building Path的hamcrest-all-1.3.jar文件来hamcrest-all-1.3.jar 。 我正在使用JUnit 4.12版本。

如果您在课堂中拥有私密规则,也会出现此问题:

 @Rule private TemporaryFolder folderRule; 

公开。

我有同样的问题…我正在使用与JUnit依赖作用域的Maven构build工具作为“testing”,我的@Test方法在主模块。

为了解决,我已经:1.在pom.xml中评论JUnit依赖关系的范围标记2.重新构build包3.确保Test类只有一个构造函数

这个问题可以被折叠:1.JUnit依赖被限制在testing范围内,而@Test方法在主范围内2.testing类有多个构造函数

我有同样的问题,对我来说,解决scheme如下。

我只从网上安装了junit.jar文件,但是这个库与hacrest-core.jar相关。当我下载了hacrest-core.jar文件并将其添加到我的项目中时,一切正常。

对我来说,解决方法是必须是无效的方法之一,我把它作为布尔值。

我的问题是,我的父类没有@Test方法。 我只用了一些实用程序。 当我宣布它abstract它的作品。

Junit 4.11不适用于Spring Test框架。 另外这个链接InitializationError当使用Spring + Junit解释如何在Eclipse中debuggingjunit initalizationError。

如果您使用的是xtend语言(或其他types推理的JVM语言),并且没有明确定义返回types,则可能会因为最后一个expression式而将其设置为非voidtypes,这将导致JUnit失败。

我得到了另外一个失败的踪迹,但是对于未来的访问者来说,

对我来说,问题是日食决定在我的testing类中只执行一个方法(虽然我不明白为什么)。 特别是如果你没有改变你的设置,检查你的运行configuration。

在我的情况下,我已经在pom.xml中更改了项目名称,以便生成新的目标目录,并且junit正在旧目录中search类。 您还需要在Eclipse中更改JUnit的目录

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

同时也检查,因为在同一窗口中列出的一些源文件夹可能有以前的目录名称。 你也需要改变它们。