有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在没有包的情况下在windows上从命令行运行Junit测试?

我有一个名为learning的文件夹(我在其中运行所有命令)。在这个文件夹中,我有两个文件,一个叫做Driver.java,它是一个简单的主类,带有一个简单的helloworld方法。另一个文件是DriverTest.java,其代码如下所示

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

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

除此之外,我在同一个learning文件夹中还有JUnit4.13-beta jar

现在,我在windows中打开命令行,转到learning文件夹位置并运行此命令

javac -cp junit-4.13-beta-1.jar;hamcrest-core-2.1-rc4.jar;. *.java

它没有给我任何错误,因此它编译了DriverDriverTestjava文件

现在,我尝试使用这个命令运行JUnit测试

java -cp junit-4.13-beta-1.jar;hamcrest-core-2.1-rc4.jar;. org.junit.runner.JUnitCore DriverTest

但我得到了这个错误:

JUnit version 4.13-beta-1
Exception in thread "main" 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.runner.Computer.getSuite(Computer.java:28)
        at org.junit.runner.Request.classes(Request.java:77)
        at org.junit.runner.JUnitCommandLineParseResult.createRequest(JUnitCommandLineParseResult.java:116)
        at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
        at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
        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)
        ... 17 more

为什么找不到我的HamCrestjar?就在同一个文件夹里,对吗


共 (1) 个答案

  1. # 1 楼答案

    您只将当前目录添加到类路径以进行编译。对于测试调用,也需要这样做,即在linux上的windows :.中的;.

    java -cp junit-4.13-beta-1.jar;. org.junit.runner.JUnitCore DriverTest