【发布时间】:2022-02-18 13:05:31
【问题描述】:
我有两个 NET5 xUnit 测试项目。在构建服务器上,我使用coverlet 生成代码覆盖率报告。这些报告根据here 指导连接到 SonarQube 扫描仪
步骤如下
开始步骤
dotnet "C:\SonarQubeScanners\sonar-scanner-msbuild-5.1.0.28487-net5.0\SonarScanner.MSBuild.dll" begin /k:"IM" /d:sonar.host.url="http://myhost.com" /d:sonar.login="xxxxxxx" /d:sonar.cs.opencover.reportsPaths="%WORKSPACE%\Tests\MyProject1.UnitTests\TestResults\**\coverage.cobertura.xml,%WORKSPACE%\Tests\MyProject2.UnitTests\TestResults\**\coverage.cobertura.xml"
构建解决方案
dotnet build "%WORKSPACE%\My.sln" -nr:false
为两个项目运行单元测试并收集数据
dotnet test "%WORKSPACE%\Tests\MyProject1.UnitTests\MyProject1.UnitTests.csproj" --collect:"XPlat Code Coverage"
dotnet test "%WORKSPACE%\Tests\MyProject2.UnitTests\MyProject2.UnitTests.csproj" --collect:"XPlat Code Coverage"
结束步骤
dotnet "C:\SonarQubeScanners\sonar-scanner-msbuild-5.1.0.28487-net5.0\SonarScanner.MSBuild.dll" end /d:sonar.login="xxxxxxx"
问题
- 每次运行单元测试时,它都会在
TestResults下创建新文件夹(带有 Guid 名称)- 如何让 SonarScanner 使用最新报告?
- 或者如何在每次运行前清理TestResult文件夹,
dotnet test命令是否有参数?
- SonarScanner 在解析生成的报告时也会抛出错误
无法导入覆盖率报告“D:\Jenkins\im\workspace\Tests\MyProject1.UnitTests\TestResults\9c4d50ae-4113-4018-97bb-30d919a9b1e7\coverage.cobertura.xml”,因为“缺少根元素 <CoverageSession>在 D:\Jenkins\im\workspace\Tests\MyProject1.UnitTests\TestResults\9c4d50ae-4113-4018-97bb-30d919a9b1e7\coverage.cobertura.xml 第 2 行'
【问题讨论】:
-
我找到了第二期的答案stackoverflow.com/questions/67086976/…
标签: .net-core sonarqube code-coverage sonarqube-scan xunit.net