首页 文章

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

提问于
浏览
0

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

我在VsTest任务中检查了“Code Coverage enabled”,测试运行并且覆盖范围在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

    debug | any cpu | Blocks | 77.51% | 417/538

    这是总代码覆盖率结果 .

    <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文件的结果为 block_coverage="31.25" classlibrary1.dll .

相关问题