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
它没有给我任何错误,因此它编译了Driver
和DriverTest
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
jar?就在同一个文件夹里,对吗
# 1 楼答案
您只将当前目录添加到类路径以进行编译。对于测试调用,也需要这样做,即在linux上的windows
:.
中的;.