导出到xml时,Visual Studio代码覆盖率不匹配

时间:2018-03-07 13:57:03

标签: xml visual-studio-2017 code-coverage vstest

我在我的VSTS版本中运行单元测试(虽然我在Visual Studio中获得了相同的结果)。我使用.runsettings文件将程序集设置为忽略等,这链接到Visual Studio项目并在VSTS测试任务中设置。

我已检查过"启用了代码覆盖率"在VsTest任务中,测试运行并且覆盖范围在VSTS中发布,例如:

VSTS Code Coverage

当我下载.coverage文件并在Visual Studio中打开时,这些数字会匹配(就像我实际在本地运行Visual Studio中的测试一样)。这是输出:

Visual Studio Code Coverage

我遇到的问题是当我将此.coverage文件导出到xml时(因为我需要将这些数据作为构建的一部分进行处理),我使用以下命令执行此操作:

"C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:out.xml "TST-20180307.7.debug.any cpu.1368.coverage"

然而,当我这样做时,覆盖的总块数和导出的xml文件中的总数与.coverage源中的总数不匹配:

<module name="vstsrestapicommon.dll" path="vstsrestapicommon.dll" id="xxx" block_coverage="95.49" line_coverage="90.85" blocks_covered="678" blocks_not_covered="32" lines_covered="268" lines_partially_covered="1" lines_not_covered="26">

基本上我们正在查看单个模块(dll),但Visual Studio和VSTS报告的块报告为641,但导出的xml报告的报告与679相同。

1 个答案:

答案 0 :(得分:0)

debug |任何cpu |块| 77.51%| 538分之417

这是总代码覆盖率结果。

<module name="xxx.dll" path="xxx.dll" id="xxx" block_coverage="78.21" line_coverage="86.32" blocks_covered="445" blocks_not_covered="124" lines_covered="164" lines_partially_covered="2" lines_not_covered="24">

这只是程序集的代码覆盖率结果。

例如:

enter image description here

总覆盖结果 57.69%,但 classlibrary1.dll 的覆盖结果为 31.25%,因此导出的xml文件为 classlibrary1.dll 的结果是 block_coverage =“31.25”