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 以进行集成和单元测试报告