【发布时间】:2018-12-08 08:07:00
【问题描述】:
您好,我的代码覆盖工具是声纳。我有这样简单的主要方法:-
public class MAIN {
public static void main(String[] args)
{
//System.setProperty("hadoop.home.dir", "C:\\software\\winutils");
//args[0]:- location of the input file args[1]:- ingest date args[2]:- source
//args[3]:-location of the output file args[4]:-location of the Error file
//args[5]:-Type of the input file args[6]:-Type of the output file
String input = args[0];
String ingestDate = args[1];
String source=args[2];
String output=args[3];
String error=args[4];
String inputFileType=args[5];
String outputType=args[6];
}
}
这个测试类是:-
public class MyTest {
private String inputFilePath;
private String inputFileType;
private String ingestDate;
private String source;
private String outputPath;
private String errorPath;
public Main driver;
@Test(expected=IndexOutOfBoundsException.class)
public void testMainIncorrectArgs() throws IOException{
//String[] args = {inputFilePath, inputFileType, ingestDate, source, outputPath, errorPath};
driver = new MAIN();
driver.main(new String[]{inputFilePath, inputFileType, ingestDate, source, outputPath, errorPath});
}
}
当我进行代码覆盖时,sonarcube 工具不包括主类代码覆盖。 我曾尝试使用 PowerMockito 和 Reflection Api 来调用该方法,但结果相同。
【问题讨论】:
-
你为什么要这样做
driver = new MemberEligibilityEtlSparkDriver();而不是driver = new Main(); -
@piy26 已编辑请检查
-
你能插入一些实际执行的行吗? . .类似
System.out.println(inputFilePath, inputFileType, ingestDate, source, outputPath, errorPath) -
1) 你知道你的
MyTest类中的单元测试是否真的被执行了吗? 2)你不需要实例化一个类来执行一个静态方法....... -
是的,实际上所有测试都在本地执行,但静态类代码没有发生代码覆盖
标签: java junit sonarqube code-coverage main