我有一个带有两个xunit测试项目的.net核心解决方案。该版本在Azure DevOps管道上运行,我想将测试范围发布到SonarQube(社区)服务器。
我基本上已经遵循了这个blog post,并且几乎可以正常工作,问题是我只看到上一个测试项目的覆盖范围,而没有看到这两个项目。
我可能是错的,但是从this issue起,我猜想在发送到SonarQube之前需要合并* .coveragexml文件。
我已经看到您可以使用Coverlet之类的工具合并coverage文件,但是当我尝试(from this help page)时遇到一些错误(例如找不到文件xunit.runner.reporters.netcoreapp10_101ce3bf-0896-4b2a-9f9e -67d8c0b742e6.pdb)
在进入这个兔子洞之前,我希望知道我是否真的需要合并我的.coveragexml文件...如果可以,我可以使用常规工具来完成它,还是需要其他诸如Coverlet之类的工具... >
欢呼
答案 0 :(得分:0)
这是一篇有关配置代码覆盖率并将其发布到Sonarqube服务器的很好的文章。
https://yuriburger.net/2018/09/10/getting-coverage-reports-with-net-core/
我假设由于 dot net test 任务中传递的参数,您的最后一个测试项目数据正在覆盖第一个测试项目。您需要确保所有测试用例都可以在同一任务中一次性运行。
任务将如下所示-
同时在SonarCloud上准备分析 这是SonarCloud任务或SonarQube任务。您从市场上获得它们。除了常规的Sonar属性(项目,键,版本),我们还需要在“高级”下提供1个额外的属性:
sonar.cs.vscoveragexml.reportsPaths=$(Agent.BuildDirectory)\TestResults\TestCoverage.xml
请参阅此内容,看看是否有帮助。
答案 1 :(得分:0)
我终于找到了问题。 您不需要合并.coveragexml文件,SonarScanner.MSBuild.exe的最新版本实际上可以找到所有.coveragexml文件。 我更仔细地查看了日志,发现有如下几行:
INFO: Sensor C# Tests Coverage Report Import [csharp]
INFO: Parsing the Visual Studio coverage XML report [...]
INFO: Adding this code coverage report to the cache [...]
INFO: Parsing the Visual Studio coverage XML report [...]
INFO: Adding this code coverage report to the cache [...]
因此找到了.coveragexml文件并将其发布到声纳。
报告的报道是错误的,因为我需要添加一个
<DebugType>Full</DebugType>
在项目中。奇怪的是,其他项目在.csproj中未设置此属性的情况下报告了一些代码覆盖率,因此我认为我不需要它。
因此,如果报告的覆盖率似乎是错误的,请尝试在csproj中添加此属性。