是否可以使用 Visual Studio 获取集成测试的代码覆盖率数据?

Posted

技术标签:

【中文标题】是否可以使用 Visual Studio 获取集成测试的代码覆盖率数据?【英文标题】:Is it possible to get code coverage data for integration tests using Visual Studio? 【发布时间】:2015-06-12 15:08:27 【问题描述】:

我正在测试一个 ASP.NET 应用程序,并希望获得有关我的集成测试执行了多少产品代码的代码覆盖率信息。我们的库已经过检测并且符号 (pdb) 文件可用,但我需要确切知道如何使 Visual Studio 能够捕获在 IIS 中执行的代码并返回 .coverage 文件。我的集成测试是 web api 测试和 Selenium 浏览器测试的混合。

这个可以吗?

【问题讨论】:

【参考方案1】:

是的,您可以使用 Visual Studio 2013 附带的动态代码覆盖率工具来执行此操作。我使用的是 Premium,所以我不能确定哪些版本可能有或可能没有这个组件。

启动覆盖并将其挂接到 IIS 的命令如下:

<VisualStudioInstallDirectory>\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe collect /IIS /session:WebSession /output:<CoverageOutputFileName>.coverage

这将重新启动 IIS 并启动覆盖过程。

运行您的集成测试(或根据需要进行手动测试)。完成后,使用以下命令停止覆盖工具:

<VisualStudioInstallDirectory>\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe shutdown /session:WebSession 

这将完成创建覆盖文件,然后可以在 Visual Studio 中打开该文件。请注意,关闭命令会使 CodeCoverage.exe 继续运行。重新启动 IIS 将关闭 CodeCoverage.exe 进程。

其他几点说明:

如果指定的输出覆盖文件已经存在,代码 覆盖率监视器不会启动。确保在开始之前使用唯一的文件名或删除任何现有文件。 如果将这些命令作为外部工具嵌入到 Visual Studio 中,则 需要以管理员身份启动 Visual Studio 才能启动 正确。

如果你想将你的覆盖文件转换为 xml 以便它可以 被其他工具消费(如ReportGenerator),你可以使用 以下命令转换覆盖文件:

\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe 分析 InputCoverageFile.coverage /output:OutputFile.coveragexml

【讨论】:

这看起来很有希望,如果我只运行一个测试它确实对我有用。但是一旦我尝试执行多个测试,生成的覆盖率文件将不会在 VS 中打开。我收到类似“覆盖文件...已损坏或无效”的错误。不确定我是否愿意尝试单独运行数百个测试然后合并结果:(

以上是关于是否可以使用 Visual Studio 获取集成测试的代码覆盖率数据?的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2015 TACo 上获取 Cordova 插件集成的构建错误

是否可以在Windows容器中安装Visual Studio

持续集成:Visual Studio 2008 上的非托管 C++

我可以将 Visual Studio 与 Unity 一起使用吗?

将 Clearcase 与 Visual Studio 2010 重新集成?

Intel parallel studio 2017 集成在visual studio 2013 中,现在如何集成到visual studio 2015