使用命令行构建和运行junit测试文件的问题

时间:2016-09-30 04:41:06

标签: java command-line junit

我有.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

任何人都可以解释为什么"。:"作品?非常感谢。

2 个答案:

答案 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

enter image description here