java - Sonar 测试覆盖范围不包括间接类别

标签 java sonarqube

如果我有以下类(A 和 B),它们各自位于单独的模块中,并且我为 A.doSomething() 创建测试,Sonar 会提示 0% 覆盖 B.doSomething(),尽管它是在 TestA 中间接测试的。 使用 Eclipse 的 Ecclema 覆盖插件,我可以看到 B.doSomething() 被视为已覆盖。

Sonar 这样做有什么原因吗?有没有办法改变 Sonar 代码测试覆盖率的行为以包含间接测试的类?

class A {
    boolean doSomething() {
        return new B().doSomething();
    }
}

class B {
    boolean doSomething() {
        return true;
    }
}

最佳答案

你可以轻松实现你想要的。这是您如何配置 JaCoCo 的问题,因此与 SonarQube 关系不大。 例如,在 SonarQube Eclipse 项目中,我们需要它,因为单元测试位于单独的模块中。

因此,我们将 JaCoCo 配置为对所有模块使用相同的转储文件(默认情况下,JaCoCo Maven 插件将为每个模块使用一个单独的转储文件): https://github.com/SonarSource/sonar-eclipse/blob/master/pom.xml#L373

然后我们配置 SonarQube JaCoCo 插件以使用相同的报告: https://github.com/SonarSource/sonar-eclipse/blob/master/pom.xml#L357

关于java - Sonar 测试覆盖范围不包括间接类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30579555/

相关文章:

java - 在spark中使用stanford nlp,错误 "Class java.util.function.Function not found - continuing with a stub."

java - Java中的SQL注入(inject)攻击

java - 当另一个 Controller 方法在 Spring MVC 中结束执行时,如何重定向到传递参数的 Controller 方法?

java - 向时钟添加时间(不起作用)-JAVA

java - 在 JGit 获取异常 "org.eclipse.jgit.api.errors.InvalidConfigurationException: No value for key remote"

javascript - 如何告诉 Sonar 分析 *.ts 文件而不是 *.js 文件

SVN 的 SSL 证书问题

java - 一些java Datagram Socket问题

jenkins - SonarQube 5.2 版构建断路器插件替代

java - 生成 JUnit 测试用例的 XML 报告