如何从终端使用junit

how to use junit from the terminal

我正在尝试在终端中使用 junit。 我有一个 class Abc.java

class Abc{
    public int add(int a, int b){
         return a+b
    }
}

并且我创建了一个 class AbcTest.java

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

class AbcTest {
    public void testAdd() {
        System.out.println("add");
        int a = 0;
        int b = 0;
        Abc instance = new Abc();
        int expResult = 0;
        int result = instance.add(a, b);
        assertEquals(expResult, result);
    }
}

当我运行命令

javac -cp /usr/share/java/junit4.jar AbcTest.java

我收到以下错误输出

AbcTest.java:16: error: cannot find symbol
Abc instance = new Abc();
^
symbol:   class Abc
location: class AbcTest
AbcTest.java:16: error: cannot find symbol
Abc instance = new Abc();
                   ^
symbol:   class Abc
location: class AbcTest
2 errors

我尝试使用命令

构建项目
javac -cp /usr/share/java/junit4.jar *.java

它可以正常构建,但是 运行 这个命令

java -cp /usr/share/java/junit4.jar org.junit.runner.JUnitCore AbcTest

抛出以下错误

JUnit version 4.11
Could not find class: AbcTest
Time: 0.002
OK (0 tests)

您需要将当前目录(或编译 class 文件所在的目录)连同必要的 jar 文件添加到 class 路径。

java -cp /usr/share/java/junit4.jar:. org.junit.runner.JUnitCore AbcTest

仅供参考,当我尝试 运行 我使用的相同测试用例时(当前目录中的 jar 文件和 class 文件)

javac -cp junit-4.11.jar:. AbcTest.java
java -cp junit-4.11.jar:hamcrest-core-1.3.jar:. org.junit.runner.JUnitCore AbcTest

并且必须将 AbcTest.java 修改为

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;


public class AbcTest {
    @Test
    public void testAdd() {
        System.out.println("add");
        int a = 0;
        int b = 0;
        Abc instance = new Abc();
        int expResult = 0;
        int result = instance.add(a, b);
        assertEquals(expResult, result);
    }
}

更改:

  1. public class AbcTest
  2. @testAdd 方法的测试注解

JUnit 自己的 Get Started page 是从命令行获取 运行 JUnit 的详细操作方法。