4

当我尝试运行 JUnit 4 测试时,我在 Eclipse 中得到 NullPointerException。JUnit3 虽然有效。

我正在尝试以下测试类:

import static org.junit.Assert.fail;
import org.junit.Test;

public class Test {

    @Test
    public void test() {
        fail("Not yet implemented");
    }

}

这是异常堆栈跟踪:

java.lang.NullPointerException
    at org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate$ClasspathLocalizer.localURL(JUnitLaunchConfigurationDelegate.java:420)
    at org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate$ClasspathLocalizer.entryString(JUnitLaunchConfigurationDelegate.java:409)
    at org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate$ClasspathLocalizer.addEntry(JUnitLaunchConfigurationDelegate.java:396)
    at org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate$ClasspathLocalizer.localizeClasspath(JUnitLaunchConfigurationDelegate.java:387)
    at org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate.getClasspath(JUnitLaunchConfigurationDelegate.java:364)
    at org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate.launch(JUnitLaunchConfigurationDelegate.java:147)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:855)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:704)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1047)
    at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1251)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

我正在使用带有 Java SDK 1.6.0_35(来自 Apple)的 OS X Snow Leopard。JDK 和 JUnit 4 都在我的构建路径中。Java版本与问题有关吗?

更新:

好吧,我是个白痴,没想到这一点。我为 C/C++ 开发人员安装了 Eclipse,因为我必须在 C++ 中做一些事情。但我也使用同一个实例为 Android 开发了 Android SDK 插件,并做了一些小的 Java 应用程序。但是我没有安装 Java 开发工具或 Java EE 开发工具。我现在安装了它们,JUnit 4 现在可以工作了。

我想其中一个工具用于 JUnit 4。奇怪的是 JUnit 3 工作。无论如何,它现在有效。

不过还是谢谢大家的支持。

4

6 回答 6

10

好吧,我是个白痴,没想到这一点。我为 C/C++ 开发人员安装了 Eclipse,因为我必须在 C++ 中做一些事情。但我也使用同一个实例为 Android 开发了 Android SDK 插件,并做了一些小的 Java 应用程序。但是我没有安装 Java 开发工具或 Java EE 开发工具。我现在安装了它们,JUnit 4 现在可以工作了。

于 2012-11-15T09:48:36.993 回答
1

我有同样的问题,因为升级问题,我将 ADT 从版本重新安装到 22.3 到 23。似乎新版本的 ADT 不包括“Java 开发工具”。

您可以查看“帮助”->“关于”->“安装详细信息”了解详细信息。

所以我使用eclipse中现有的Juno升级站点来安装JDT(Juno - http://download.eclipse.org/releases/juno),之后就可以正常工作了。

于 2014-08-27T05:07:17.927 回答
0

您的导入 org.junit.Test 与类名冲突。您可能希望将您的类 Test 重命名为例如 ATest 以获得:

java.lang.AssertionError: Not yet implemented
    at org.junit.Assert.fail(Assert.java:91)
    at ATest.test(ATest.java:8)

另一种选择可能是将 Test 放在一个包中(因为不使用默认包)

源代码:

import static org.junit.Assert.fail;
import org.junit.Test;

public class ATest {

    @Test
    public void test() {
        fail("Not yet implemented");
    }

}

在 Max OS 10.8.0 上使用 Eclipse Juno 进行测试

java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-10M3811)
Java HotSpot(TM) Client VM (build 20.10-b01-428, mixed mode)

我很确定这也适用于狮子。

于 2012-10-16T16:09:20.780 回答
0

解决方案是,是的,正如您的 UPDATE 描述的那样,默认值为尚未安装的 JUnit 4。一旦更改为 JUnit 3,它就可以工作。

于 2013-06-03T07:52:13.003 回答
0

我在新安装的 Eclipse Neon 和 ADT(Android,包括 Java,通常安装 Junit)中遇到了同样的问题。

我刚刚安装了 JDT(Java 开发工具),之后它运行良好。

于 2017-03-24T12:55:00.177 回答
-2

我遇到过同样的问题!只需重置透视图(右键单击->重置),它就会起作用!

于 2014-08-26T09:16:10.173 回答