当前位置: 首页 > 知识库问答 >
问题:

SonarQu只能显示Java测试的一些测试覆盖率

谷梁翰飞
2023-03-14

我的java应用现在有45%的代码覆盖率。我一直在添加新的测试,它们被我的应用程序(通过mvn测试和Intellij显示覆盖率)和Sonarqube扫描。

这是我的测试文件:

public class BadRequestAlertExceptionTest {

    BadRequestAlertException baExc = new BadRequestAlertException("testDefaultMessage","testEntityName");
    @Test
    public void getEntityName() {
        assertEquals("testEntityName", baExc.getEntityName());
    }
}

我正在尝试向以下文件添加代码覆盖率:

public class BadRequestAlertException extends AbstractThrowableProblem {
    private static final long serialVersionUID = 1L;
    private final String entityName;
    public BadRequestAlertException(String defaultMessage, String entityName) {
        this(ErrorConstants.DEFAULT_TYPE, defaultMessage, entityName);
    }
    public BadRequestAlertException(URI type, String defaultMessage, String entityName) {
        super(type, defaultMessage, Status.BAD_REQUEST, null, null, null, getAlertParameters(entityName));
        this.entityName = entityName;
    }
    public String getEntityName() {
        return entityName;
    }
    private static Map<String, Object> getAlertParameters(String entityName) {
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("message", "error.");
        parameters.put("params", entityName);
        return parameters;
    }
}

在本地,我可以看到该文件的代码覆盖率为100%,但在Sonarqube上显示为0%。有人知道为什么吗?我知道Sonarqube设置正确,因为它已经将我的其他文件的覆盖率提高了%。

我使用的测试工具是JUnit。

我的测试可能不正确,所以Sonarqube不接受它为100%,而我的“mvn测试”和我的IDE接受它为100%?

我看着SonarQube没有获得单元测试覆盖率,但是这个问题更多的是关于Sonarqube是否显示0%的覆盖率(我的显示了一些覆盖率)

共有1个答案

朱承载
2023-03-14

根据我最近的经验,很可能您没有导入正确的测试包。两件应该让Java开发更容易的事情对你不利。

  • 首先,当您用“@Test”注释类时,IDE通常会自动建议导入。然而,“Test”是一个常见的名称空间/类名,因此自动建议可能是针对本地类,而不是org。朱尼特。测试
 类似资料:
  • 这是我的nodejs类型脚本类和ISHELTHY()公共方法的书面jest单元测试。 测试覆盖率表明这一点。pingCheck()则不包括block、catch和last return语句。请告知。 我们可以做pingcheck私有方法的单元测试吗? 这是我的课 这是我的单元测试代码。我在运行npm运行测试时遇到以下错误 (节点:7876)未处理的PromisejectionWarning:Typ

  • 问题内容: 从不同的代码库执行业务测试时,我必须获得应用程序的代码覆盖率。 我使用:Maven作为我的构建Jbehave作为我的测试框架。测试是用Java编写的。 我的应用程序是部署在tomcat上的一组war文件。 应用程序代码库与测试代码库是分开的。 为了获得覆盖范围,我遵循以下步骤。 1使用maven编译测试代码。 2将应用程序类从其构建位置($ {app.code.dir} / targe

  • 11.3. 测试覆盖率 就其性质而言,测试不可能是完整的。计算机科学家Edsger Dijkstra曾说过:“测试能证明缺陷存在,而无法证明没有缺陷。”再多的测试也不能证明一个程序没有BUG。在最好的情况下,测试可以增强我们的信心:代码在很多重要场景下是可以正常工作的。 对待测程序执行的测试的程度称为测试的覆盖率。测试覆盖率并不能量化——即使最简单的程序的动态也是难以精确测量的——但是有启发式方法

  • 我尝试在我的应用程序模块中的代码的AndroidKotlin应用程序的声纳Qube中显示测试覆盖范围。我可以生成雅各的覆盖结果并显示声纳Qube分度仪,但问题是测试覆盖范围未显示在声纳Qube中: https://imgur.com/a/xOjxLl1 在我的项目的build.gradle中,我有: 在我的身体里。我的应用程序模块的gradle 我生成我的Jacoco报告: 并使用:生成我的son

  • 我必须获得应用程序的代码覆盖率,而业务测试是从不同的代码库执行的。 我使用:Maven作为我的构建Jbehave作为我的测试框架。测试是用java编写的。 我的应用程序是部署在tomcat上的一组war文件。 应用程序代码库与测试代码库是分开的。 在获得覆盖范围时,我遵循以下步骤。 1使用maven编译测试代码。 2将应用程序类从构建位置(${app.code.dir}/目标/类)复制到${tes

  • 问题内容: 在我正在从事的项目中,我们有通过Selenium编写的功能测试。该应用程序随每个功能发行版进行功能更改。 有没有一种工具/机制可以跟踪自动化功能测试中的差距,以便至少手动测试人员可以关注这些领域? 注意:我们并未执行FTDD,因此即使我们确保较高的单元测试覆盖率,功能测试覆盖率也可能会很差。我们使用NCover检查单元测试范围。 问题答案: 据我所知,至少有两个(商业但便宜)的工具可让