您必须在构建服务器上运行dotnet test 命令,并使用正确的参数来生成覆盖文件。在 Jenkins 中添加以下作为批处理步骤。
dotnet test --logger "trx;LogFileName=[You project name].trx" --collect "Code Coverage"
--results-directory:"[Your project path]\TestResults"
请注意,上述命令中的"Code Coverage" 文本应与run.settings 文件的DataCollector 标记的frieldlyName 属性匹配。
运行上述命令时,它会创建一个.coverage 文件,您需要将该文件转换为.coveragexml。但是生成的文件会有一个随机的名称,所以你需要先重命名它。
ren *.coverage [Your project name].coverage
以下命令将.coverage 转换为.coveragexml。
CodeCoverage analyze /output:[Your project name].coveragexml [Your project name].coverage
最后,把这个.coveragexml文件的路径给Sonar:
sonar.cs.vscoveragexml.reportsPaths=[Your project name].coveragexml
PS:您也可以将.trx 文件提供给您在第一步中创建的Sonar。然后声纳会告诉您更多关于您的测试数量、通过率等信息。
sonar.cs.vstest.reportsPaths=[Your project name].trx