SonarQube 5.6 中的 C# 单元测试结果

Posted

技术标签:

【中文标题】SonarQube 5.6 中的 C# 单元测试结果【英文标题】:C# unit test results in SonarQube 5.6 【发布时间】:2016-10-25 19:15:45 【问题描述】:

环境:SonarQube 5.6 - SonarQube Runner 2.4 - MSBuild.SonarQube.Runner-2.0 - TFS 2015 - C#6

我有一个带有 C# 6 项目和单元测试的 Visual Studio 2015 解决方案。在我的 TFS 2015 服务器上,我定义了一个构建(基于任务,而不是 xaml)。在我的构建中,我添加了以下步骤: - 用于 MSBuild 的 SonarQube - 开始分析。 - Visual Studio 测试 - 用于 MSBuild 的 SonarQube - 结束分析。

一切运行良好(构建、单元测试执行、代码覆盖率、基于 SonarLint 的分析结果……除了我没有在 Sonar 报告中看到测试结果(代码覆盖率在那里!)。

我尝试添加一些参数: - 开始分析:我添加了:/d:sonar.cs.vstest.reportsPaths=../TestResults/*.trx - vstests 控制台:/Logger:trx

在最终分析日志中,我看到了这个:

正在尝试查找测试结果 (.trx) 文件... 找到一个测试结果文件:E:\agent_work\3\TestResults\tests_results_2016-06-23 14_07_22.trx 传感器 org.sonar.plugins.csharp.CSharpUnitTestResultsProvider$CSharpUnitTestResultsImportSensor 传感器 org.sonar.plugins.csharp.CSharpUnitTestResultsProvider$CSharpUnitTestResultsImportSensor (完成) |时间=0ms

知道为什么我在 Sonar 报告中总是看到 Unit tests=0 吗?

【问题讨论】:

【参考方案1】:

您需要提供 .trx 文件的完整路径。在开始分析中进行以下更改,然后重试。

改变

/d:sonar.cs.vstest.reportsPaths=../TestResults/*.trx 

收件人

 /d:sonar.cs.vstest.reportsPaths=../TestResults/Mytest.trx 

【讨论】:

无法强制执行 TFS 测试运行器控制台的输出文件名。它包含日期结束时间。我添加了一个中间任务,将任何 trx 文件重命名为 testsresults.trx。我现在出现以下错误: 找到一个测试结果文件:E:\agent_work\3\TestResults\testresults.trx 后处理成功。 ##[error]Unexpected exit code received from batch file: 255 ##[warning]找不到摘要报告文件 E:\agent_work\3\.sonarqube\out\summary.md

以上是关于SonarQube 5.6 中的 C# 单元测试结果的主要内容,如果未能解决你的问题,请参考以下文章

使用 Powermock 在 Sonarqube 中配置 jacoco 以进行集成和单元测试报告

将 Angular 单元测试报告导入 Sonarqube

SonarQube 单元测试报告不显示 Javascript 文件

iOS单元测试-04-覆盖率上传sonarqube

单元测试覆盖在 Sonarqube 中不可见

使用 rspec 的 Sonarqube 未显示单元测试的计数