代码之家  ›  专栏  ›  技术社区  ›  Jujang

命令行中Junit和Jacoco的java覆盖率为0%

  •  2
  • Jujang  · 技术社区  · 6 年前

    我在所有这些过程中只使用了“命令行”,我想这样做。(不使用Ant、maven、gradle等)

    我想运行Junit测试用例和JaCoCo覆盖估计。

    首先,下面是我的代码

    Calculator.java :

    public class Calculator {
      public int evaluate(String expression) {
    
        int sum = 0;
        for(String summand: expression.split("\\+"))
            sum += Integer.valueOf(summand);
        System.out.println("Hello World!!");
        return sum;
      }
    }
    

    CalculatorTest.java :

    import static org.junit.Assert.assertEquals;
    import org.junit.Test;
    
    public class CalculatorTest {
      @Test
      public void evaluatesExpression(){
        Calculator calculator = new Calculator();
        int sum = calculator.evaluate("1+2+3");
        assertEquals(6, sum);
      }
    }
    

    中有2个java文件 C\Cal Cal 文件夹包含4个jar文件 ( junit-4.12.jar ,则, hamcrest-core-1.3.jar ,则, jacococli.jar ,则, jacocoagent.jar )

    在这种情况下,我创建了类文件 Calculator.class

    javac Calculator.java
    

    然后,我 exec (我认为这是jacoco的执行文件)文件来估计 计算器Java语言 文件

    java -javaagent:jacocoagent.jar=destfile=jacoco.exec
    

    之后,我使用 文件和命令

    java -jar jacococli.jar report jacoco.exec --classfiles Calculator.class --html "report" --name jacocoReport --sourcefiles "Calulator.java"
    

    以下是我的问题:

    1. 你知道为什么我的保险范围是0%吗?

    2. 在尝试提取我想要的覆盖率结果时是否有任何问题?

    3. 在计算 计算器Java语言 文件提交人 计算器测试。Java语言 编写代码并提取报告,是否正确 --classfiles 仅使用 计算器班 ?

    4. 即使同时插入两个,结果也没有差别 计算器Java语言 计算器测试。Java语言 在里面 --sourcefiles 。我说错了吗?或者 --源文件

    这是我引用的互联网页面:

    1 回复  |  直到 6 年前
        1
  •  3
  •   Godin    6 年前

    你知道为什么我的保险范围是0%吗?

    即使同时插入两个,结果也没有差别 Calculator.java CalculatorTest.java 在里面 --sourcefiles 。我说错了吗?或者 --源文件 ?

    应指向包含包的目录。在您的情况下,您的文件使用默认包(无包),因此 --源文件 应指向包含 计算器Java语言

    在尝试提取我想要的覆盖率结果时是否有任何问题?

    计算器Java语言 在目录中 src 计算器测试。Java语言 在目录中 test-src

    mkdir classes
    javac src/Calculator.java -d classes
    mkdir test-classes
    javac -cp junit-4.12.jar:classes test-src/CalculatorTest.java -d test-classes
    java -javaagent:jacoco-0.8.1/lib/jacocoagent.jar -cp junit-4.12.jar:hamcrest-core-1.3.jar:classes:test-classes org.junit.runner.JUnitCore CalculatorTest
    java -jar jacoco-0.8.1/lib/jacococli.jar report jacoco.exec --classfiles classes --sourcefiles src --html report
    

    生成以下报告

    report

    在计算 计算器Java语言 文件提交人 计算器测试。Java语言 编写代码并提取报告,是否正确 --classfiles 仅使用 Calculator.class ?

    --类文件 应指向类文件,或包含类文件的目录,或包含类文件的档案,这些文件应出现在报告中。 CalculatorTest.class 未在上面的示例中指定,因此它不会出现在报告中。如有规定:

    java -jar jacoco-0.8.1/lib/jacococli.jar report jacoco.exec --classfiles classes --sourcefiles src --classfiles test-classes --sourcefiles test-src --html report
    

    report