【发布时间】:2019-12-30 17:55:38
【问题描述】:
我正在编写一个Java程序(使用swing UI),它以一个java程序(带有main函数的.java文件)和一个包含大量测试用例的excel文件作为输入。
然后它使用遗传算法返回一个有限大小的小测试用例子集,根据标准是最佳的。
这些标准之一是代码覆盖率。
我可以轻松编写一个在 cli 中运行命令并读取输出的适应度函数。唯一的问题是我需要一个在命令行中运行并返回代码覆盖率值(字节码或任何其他级别)的工具。我的适应度函数会读取这个代码覆盖率值,然后尝试为整个子集最大化它。
底线:- 我需要一个工具来检查 *.java 文件的代码覆盖率。
在我的情况下有 2 个类:-
TestingClass.java
import interest_calculator.CompoundInterest;
public class TestingClass {
static CompoundInterest obj;
public static final int ARGS_COUNT = 3;
public static void main( String[] args ) {
initializeClass();
setValues( args );
printResult();
}
private static void initializeClass() {
obj = new CompoundInterest();
}
private static void setValues( String[] args ) {
obj.principle = Double.parseDouble(args[0]);
obj.rate = Double.parseDouble(args[1]);
obj.time = Double.parseDouble(args[2]);
}
private static void printResult() {
System.out.println( obj.calcCompoundInterest() );
}
}
CompoundInterest.java(在子文件夹“interest_calculator”中):-
package interest_calculator;
public class CompoundInterest {
public double principle;
public double rate;
public double time;
public double calcCompoundInterest() {
double ci = principle * ( java.lang.Math.pow((1 + rate / 100), time) );
ci = round( ci, 2 );
return ci;
}
public double round(double value, int places) {
if (places < 0) throw new IllegalArgumentException();
long factor = (long) Math.pow(10, places);
value = value * factor;
long tmp = Math.round(value);
return (double) tmp / factor;
}
}
我需要一个工具,让我使用三个命令行参数从命令行调用 TestingClass,并返回任何类型的代码覆盖率(字面意思是任何类型)。我只需要演示用于代码覆盖的遗传算法的工作原理。
有没有 suh 工具。以及我如何使用该工具来计算程序的命令行参数的代码覆盖率。
顺便说一下,遗传算法适用于其他标准。为此,我正在使用 Jenetics 库。
【问题讨论】:
-
code covergar 没有任何意义,尤其是像您在 fittness 中所做的应用程序级别测试。更重要的是您无法衡量的需求覆盖率。 --- 说了这么多:你看过cobertura吗?
-
大声笑 - 我只能通过查看您的代码来告诉您代码覆盖率。你的主班有 100%,另一班有 0%
标签: java unit-testing testing code-coverage jacoco