我正在尝试将TeamCity的单元测试和dotCover代码分析结果上传到Sonar服务器。它显示了TeamCity中的代码覆盖率和单元测试结果,但没有对Sonar进行代码覆盖/单元测试。
TeamCity单元测试步骤:
随后是Powershell脚本:
我在Sonar Runner步骤中有以下附加参数:
Dsonar.cs.vstest.reportsPaths = TestResults.trc Dsonar.cs.dotcover.reportsPaths ='%sonar.coverageReport%'
有谁知道如何解决这个问题?
感谢。
答案 0 :(得分:2)
使用以下脚本在步骤3中管理以解决问题:
$Files= Get-ChildItem %system.teamcity.build.tempDir% `
-Filter coverage_dotcover*.data `
| where-object {$_.length -gt 50} `
| Select-Object -ExpandProperty FullName
$snapshot =[string]::Join(";",$Files)
& %teamcity.tool.dotCover%\dotCover.exe merge `
/Source=$snapshot `
/Output=%env.TEMP%\dotCoverReport.dcvr`
& %teamcity.tool.dotCover%\dotCover.exe report `
/Source=%env.TEMP%\dotCoverReport.dcvr `
/Output=%sonar.coverageReport% `
/ReportType=HTML
答案 1 :(得分:2)
你有什么TeamCity版本?在TeamCity 9.1.1中,有bug导致测试报告文件写入构建临时目录。在这种情况下,希望trx文件在checkout目录中的Sonar插件找不到它。 有几种方法可以解决它:第一种是升级到TeamCity 9.1.2及更高版本,第二种是将绝对路径传递给报告路径变量:
-Dsonar.cs.vstest.reportsPaths=%system.teamcity.build.tempDir%/TestResults.trc
第三种方法是将绝对路径(指向checkout目录)传递给mstest runner的结果文件字段:
%system.teamcity.build.checkoutDir%/TestResults.trc