如何从jacoco代码覆盖率中排除一行?

2022-09-04 19:32:13

我如何从jacoco代码覆盖率中排除,在pom.xml或java代码中?inputStream.close()

public void run() {
    InputStream inputStream = null;
    try {
        inputStream = fileSystem.newFileInputStream(file);
    }
    finally {
        if(inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {}
        }
    }
}

答案 1

至于现在,无法排除特定行(请参阅链接):

截至今天,JaCoCo核心仅适用于类文件,没有源代码处理。这将需要对体系结构进行重大修改,并增加额外的配置麻烦。

这意味着,Jacoco分析程序的字节代码,而不是源代码,因此它不能使用注释等提示

跟踪相应的问题以跟踪此类功能实现的状态。

作为一种解决方法,您可以将其放入单独的方法中,但是看,当您更改代码只是为了达到100%的覆盖率时,这是一种难闻的气味。


答案 2

我怀疑你真正想要的是100%的覆盖率。请考虑改用资源试用块来重写代码。例如:

try (final InputStream inputStream = new FileInputStream(file)){
    //work with inputStream; auto-closes
}
catch (final Exception ex){
    //handle it appropriately
}

推荐