如何在没有软件包的Windows上从命令行运行Junit测试?

时间:2018-12-17 01:32:49

标签: java testing junit path classpath

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

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

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

除此之外,我在同一learning文件夹中有JUnit 4.13-beta jar。

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

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

它没有给我任何错误,因此它已经编译了DriverDriverTest Java文件。

现在,我正在尝试使用此命令运行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

为什么找不到我的HamCrest罐子?它在同一文件夹中吗?

1 个答案:

答案 0 :(得分:0)

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

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