0

我是 Jenkins 和 SonarQube 配置的新手。想要在 SonarQube Dashboard 中显示项目的 PC 层的代码覆盖率。(测试用例是使用 MS 测试框架编写的)尽管有 40 多个 PC 层测试用例,SonarQube Dashboard 仍显示 0% 的覆盖率。以下是“构建”配置: 从 Jenkins Job 构建配置

第2部分: 在此处输入图像描述

SonarQube 仪表板 在此处输入图像描述

假设可能的原因 - sonarqube 仪表板显示 WebProject 的结果(如屏幕截图中突出显示的那样)而不是业务层。需要帮助显示项目业务层的覆盖范围(屏幕截图中突出显示的 PC)

在此处输入图像描述

4

2 回答 2

0

你有 24k 行代码和 40 个单元测试?覆盖率可能低于 1%……甚至低于 0.5%。所以这被四舍五入到 0%。

如果您想缩小范围,您可以为您不希望包含在覆盖率计算中的内容设置排除项(您必须在更新后重新分析才能使其生效)但您仍然可能在您添加更多测试之前,权重约为 0%。

于 2018-05-21T12:28:08.183 回答
0

几个月后,我得以解决。正如上面问题中强调的那样,要求是实现对 PC 等业务层的代码覆盖。这是通过以下步骤修复的:

声纳插件顺序应该是:

  1. 执行 Windows 批处理命令 - 删除 .trx 或 .coveragexml 文件
  2. 适用于 MSBUILD 的 SonarQube 扫描仪 - 开始分析
  3. 使用 MSBUILD 构建 VS 项目或解决方案
  4. 使用 VSTest.console 运行单元测试
  5. 执行windows批处理命令-将测试报告从trx转换为coveragexml
  6. 用于 MSBUILD 的 SonarQube 扫描仪 - 末端分析

注意:确保使用 VSTest.console而不是 MS Test运行单元测试

在windows批处理命令插件中更改路径以删除测试结果文件

d:\jenkins\tools\nuget\nuget.exe restore "%WORKSPACE%\<Project>.sln"

if exist TestResults\ del TestResults\*.trx

if exist TestResults\ del TestResults\*.coveragexml

将单元测试 dll 的路径更改为 -“Bin\.UnitTest.dll”。

于 2018-10-17T20:40:53.457 回答