我有.java文件及其.class文件,以及junit测试文件,以及junit-4.10.jar和hamcrest-core-1.3.jar在同一个文件夹中。我正在尝试通过执行以下操作来构建它:
javac ErrorTest * .java
我收到了很多错误
错误:包org.junit不存在
然后当我尝试使用此命令在/ usr / share / java文件夹中使用junit文件时:
javac -cp / usr / share / java / * ErrorTest * .java
我收到以下错误:
javac:invalid flag:/usr/share/java/ant-antlr-1.9.6.jar用法:javac 使用-help获取可能的选项列表
如何构建和运行这些ErrorTest.java junit文件?
编辑:好的,我想出来但我不明白为什么。
以下内容给出了错误:
javac -classpath /path/to/graph/*:/path/to/graph/lib/* ErrorTest*.java
以下内容生成所需的.class文件:
javac -classpath .:/path/to/graph/*:/path/to/graph/lib/* ErrorTest*.java
任何人都可以解释为什么"。:"作品?非常感谢。
答案 0 :(得分:2)
因此,Java CLASSPATH指向由"."
表示的当前目录,它将在当前目录中查找类。
如果我们在CLASSPATH变量中定义了多个目录,Java将从第一个目录开始查找一个类,并且只有在第一个目录中找不到指定的类时才查看第二个目录。在":"
您已将类路径设置为
javac -classpath .:/path/to/graph/*:/path/to/graph/lib/* ErrorTest*.java
所以使用此命令可以在类路径中设置多个目录。
JVM搜索目录按其在CLASSPATH变量中列出的顺序。
在你的情况下,当前目录中似乎有一些类,所以如果你没有在classpath中提供当前目录,那么JVM在第二个路径中搜索,然后是第三个但是必需的类不存在,所以看起来它没有工作
答案 1 :(得分:0)
要从命令提示符运行Junit 4.x测试用例,您应该使用以下命令
java -cp C:\lib\junit.jar org.junit.runner.JUnitCore [test class name]
要从命令提示符运行Junit 3.x测试用例,您需要使用以下命令
java -cp /usr/java/lib/junit.jar junit.textui.TestRunner [test class name]
示例程序
**TestCaseA.java**
package test;
import org.junit.Test;
import org.junit.After;
import org.junit.Before;
public class TestCaseA
{
@Before
public void beforeMethod()
{
System.out.println("Before method..");
}
@Test
public void JUnit4Test()
{
System.out.println("In test method");
}
@After
public void afterMethod()
{
System.out.println("after method");
}
}
从命令提示符执行
java -cp junit-4.10.jar;test\TestCaseA.class; org.junit.runner.JUnitCore test.TestCaseA