繁体   English   中英

在 Visual Studio 之外查看代码覆盖率结果

[英]Viewing Code Coverage Results outside of Visual studio

我进行了一些单元测试,并获得了一些代码覆盖率数据。 现在,我希望能够在 Visual Studio 之外(例如在 Web 浏览器中)查看代码覆盖率数据。 但是,当我将代码覆盖率导出到 xml 文件时,我无能为力。 有读者吗? 我是否必须编写一个 xml 解析器,然后以我想要的方式显示它(这似乎是一种浪费,因为 Visual Studio 已经这样做了。)必须将我的代码覆盖率结果的屏幕截图作为我的“报告”建议似乎有点傻?

这个工具https://github.com/danielpalme/ReportGenerator从覆盖文件快速生成 Html 报告。 效果很好,不需要复杂的活动,可以很容易地包含在构建过​​程中。

有一个名为 Visual Coverage ( https://github.com/jsargiot/visual-coverage ) 的工具。 它需要一个 .coverage 文件作为输入,并且可以将其导出为三叶草或 html。

github 上的页面显示了如何执行,如果您好奇,可以查看代码...

您可以使用工具 NDepend 并可视化NCoverdotCoverVisual Studio 覆盖率导入的代码覆盖率结果 该工具可以在彩色树状图中显示代码覆盖率与代码行的关系 此功能对于一目了然地浏览哪些代码部分被测试很好地覆盖或未覆盖特别有用。

NDepend 彩色树状图代码覆盖率与代码行数

您还可以编写和应用通过 LINQ 查询 (CQLinq) 编写的连续代码规则,例如:

从现在开始,所有添加或重构的类型都应该 100% 被测试覆盖

// <Name>From now, all types added or refactored should be 100% covered by tests</Name>
warnif count > 0 from t in JustMyCode.Types where

  // Match methods new or modified since Baseline for Comparison...
  (t.WasAdded() || t.CodeWasChanged()) &&

  // ...that are not 100% covered by tests
  t.PercentageCoverage < 100

  let methodsCulprit = t.Methods.Where(m => m.PercentageCoverage < 100)

select new { t, t.PercentageCoverage, methodsCulprit }

...或者还有:

Search by Coverage面板可以通过 LINQ 生成这样的代码查询,并立即显示匹配的代码元素:

按覆盖范围搜索方法

此外,该工具可以构建HTML/javascript 报告,显示违反的代码规则代码查询结果

现在您可以使用 dotnet 工具生成 html 报告

dotnet tool install -g dotnet-reportgenerator-globaltool
reportgenerator
"-reports:Path\To\TestProject\TestResults\{guid}\coverage.cobertura.xml"
"-targetdir:coveragereport"
-reporttypes:Html

来源: https : //docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-code-coverage?tabs=linux#generate-reports

可能有帮助:您可以在代码覆盖率结果窗格中打开所有覆盖率数据并将其复制并粘贴到 Excel...

我不能说导出的 XML 的内容,但我希望它包含您的覆盖数据作为摘要。

如果您想在 Web 浏览器页面中看到这样的 XML 数据,通常的做法是通过编写和运行自定义 XSLT 脚本将其转换为 HTML。 这可能会为您提供包含数据的 HTML 文本和表格。

如果您想将覆盖数据视为强加在源代码上的装饰,我认为您有一个更难的问题。

我使用 NCover 来完成我所有的代码覆盖,你可以很容易地导出结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM