You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SonarQube & JaCoCo(Maven)测试命名规则及覆盖率统计问题咨询

测试类命名规则的官方约定

你遇到的覆盖率统计差异是Java Maven生态下测试插件、JaCoCo、SonarQube共同遵循的默认约定,官方有明确的规则定义:

  • 负责执行单元测试的maven-surefire-plugin默认匹配的测试类命名规则为:
    • 以Test开头
    • 以Test、Tests、TestCase结尾
  • 负责执行集成测试的maven-failsafe-plugin默认匹配的测试类命名规则为:
    • 以IT开头
    • 以IT、ITCase结尾

JaCoCo默认会分别统计两个插件生成的测试执行数据,SonarQube也默认遵循该约定区分单元测试覆盖率、集成测试覆盖率。你遇到的*Test类不计入覆盖率的情况,通常是项目配置中将Surefire生成的单元测试覆盖率数据排除在了Sonar统计范围之外,或是你的*Test类实际需要启动应用上下文,被配置到了Failsafe的执行流程中,但不符合Failsafe的命名规则所以未被执行,自然没有覆盖率数据。

仅使用Mock API场景的命名要求

你描述的仅使用Mock API、未对接其他运行中应用的测试属于单元测试范畴,无需强制使用IT后缀,符合*Test命名规则即可。
如果你的这类测试需要启动Spring应用上下文(比如使用了@SpringBootTest注解),但仍属于单组件逻辑验证、无外部依赖调用,可根据项目需求调整配置:

  • 若希望按单元测试统计:修改Surefire插件配置,将带上下文的*Test类纳入执行范围,同时配置JaCoCo、SonarQube读取Surefire的执行数据即可
  • 若希望按集成测试统一统计:遵循Failsafe的命名规则,统一使用*IT后缀即可

内容的提问来源于stack exchange,提问作者CaptainDolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:57:00