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

.NET6项目SonarQube无代码覆盖率及单元测试数问题求助

解决NUnit测试数在SonarQube中显示为0的问题

1. 先确保生成NUnit测试结果XML文件

你当前的dotnet dotcover test命令只生成了dotCover的HTML覆盖率报告,没有输出NUnit的测试结果XML文件。需要修改测试命令,让NUnit同时生成XML格式的测试结果:

dotnet dotcover test --dcReportType=HTML --logger:"nunit;LogFilePath=Nunit/Result.xml"
  • --logger:"nunit;LogFilePath=Nunit/Result.xml" 会让NUnit在指定路径生成测试结果XML,若Nunit目录不存在,命令会自动创建。

2. 修正SonarScanner的报告路径配置

在dotnet sonarscanner begin阶段,确保NUnit报告路径配置正确:

  • 相对路径以执行begin命令的项目根目录为基准
  • 路径用正斜杠/或转义反斜杠\\,避免单个反斜杠的转义问题

修改后的begin命令示例:

dotnet sonarscanner begin /k:"<sonar-project-key>"
    /d:sonar.login="<sonar-token>"
    /d:sonar.cs.dotcover.reportsPaths=dotCover.Output.html
    /d:sonar.cs.nunit.reportsPaths="Nunit/Result.xml"

3. 验证报告文件的有效性

执行测试命令后,手动检查Nunit/Result.xml是否存在:

  • 若文件不存在,检查测试命令是否报错,或路径拼写错误
  • 若文件存在,打开确认内容是有效的NUnit测试结果(非空、格式正确)

4. 确保测试项目被扫描到

  • 确认dotnet build命令覆盖了测试项目(如果是解决方案,dotnet build会编译所有项目;单个项目需明确指定测试项目)
  • 检查SonarQube项目的分析范围配置,未将测试项目排除在外

5. 严格遵循命令执行顺序

必须按以下顺序执行,保证Sonar能正确读取报告:

  1. dotnet sonarscanner begin(初始化扫描上下文)
  2. dotnet build --no-incremental
  3. dotnet dotcover test(生成覆盖率和测试结果报告)
  4. dotnet sonarscanner end(读取所有报告并上传)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:35:02