团队城市代码覆盖率和单元测试结果未在Sonar上显示

时间:2015-12-21 14:16:58

标签: sonarqube teamcity mstest dotcover

我正在尝试将TeamCity的单元测试和dotCover代码分析结果上传到Sonar服务器。它显示了TeamCity中的代码覆盖率和单元测试结果,但没有对Sonar进行代码覆盖/单元测试。

enter image description here

TeamCity单元测试步骤:

enter image description here

随后是Powershell脚本:

enter image description here

我在Sonar Runner步骤中有以下附加参数:

  

Dsonar.cs.vstest.reportsPaths = TestResults.trc   Dsonar.cs.dotcover.reportsPaths ='%sonar.coverageReport%'

有谁知道如何解决这个问题?

感谢。

2 个答案:

答案 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