在所有这些进程中,我只使用了“命令行”,我想这样做。(不使用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);
}
}
C\Cal
中有2个java文件,Cal
文件夹包含4个jar文件(junit-4.12.jar
、hamcrest-core-1.3.jar
、jacococli.jar
、jacocoagent.jar
)。
在这种情况下,我制作了类文件Calculator.class
。
javac Calculator.java
然后,我制作了exec
文件(我认为它是Calculator.java
文件的执行文件)来估计Calculator.java
文件的单元测试覆盖率。
java -javaagent:jacocoagent.jar=destfile=jacoco.exec
之后,我使用exec
文件和命令解压报告。
java -jar jacococli.jar report jacoco.exec --classfiles Calculator.class --html "report" --name jacocoReport --sourcefiles "Calulator.java"
但是,我所做的html报告中的测试覆盖率是0%。
以下是我的问题:
Calculator.java
代码计算CalculatorTest.java
文件的覆盖率和提取报表时,仅使用Calculator.class
编写--classfiles
是否正确?Calculator.java
和CalculatorTest.java
中插入--sourcefiles
,结果也没有差别。我说错了吗?或者--sourcefiles
的作用是什么这是我提到的网页:
发布于 2018-03-26 23:32:16
你知道为什么我的覆盖率是0%吗? 即使在
Calculator.java
和CalculatorTest.java
中插入--sourcefiles
,结果也没有差别。我说错了吗?或者--sourcefiles
的作用是什么?
--sourcefiles
应该指向包含包的目录。在您的示例中,您的文件使用默认包(没有包),因此--sourcefiles
应该指向包含Calculator.java
的目录。
试图提取我想要的覆盖结果有什么问题吗?
不-没有问题。例如,Calculator.java
位于src
目录中,CalculatorTest.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
编写后续报告
当使用
Calculator.java
代码计算CalculatorTest.java
文件的覆盖率并提取报表时,仅使用Calculator.class
编写--classfiles
是否正确?
--classfiles
应该指向类文件,或者包含类文件的目录,或者指向包含类文件的归档,这些文件应该出现在报表中。在上面的示例中没有指定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
https://stackoverflow.com/questions/49506057
复制相似问题