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

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

可以这样做吗?

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

启动coverage并将其挂钩到IIS的命令如下:

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

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

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

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

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

其他几点说明:

  • 如果指定的输出coverage文件已存在,则代码覆盖率监视器将不会启动。 确保在启动之前使用唯一的文件名或删除任何现有文件。
  • 如果在Visual Studio中将这些命令作为外部工具嵌入,则需要以管理员身份启动Visual Studio才能使其正确启动。
  • 如果要将coverage文件转换为xml以便其他工具(例如ReportGenerator )可以使用它,则可以使用以下命令转换coverage文件:

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