Visual Studio 2012 的代码覆盖工具完全独立于测试执行系统(完全披露:我编写了它,但在我离开微软后继承它的团队删除了一些相当有用的功能)。它在 VS 2012 中从头开始重写,以便在加载到进程中而不是修改磁盘上的可执行文件时动态检测本机代码(x86 和 x86-64)和托管代码(.NET 和 Silverlight)。
您可以在“%ProgramFiles%\Microsoft Visual Studio 11.0\Team Tools\Dynamic Code Coverage Tools”中找到 CodeCoverage.exe。
收集数据:
CodeCoverage.exe collect /output:foo.coverage foo.exe foos_args
可以指定一个配置文件(该目录中有一个名为 CodeCoverage.config 的默认文件)来控制收集。
要分析覆盖率数据,您可以在 Visual Studio 2012 中打开 foo.coverage 或使用覆盖率工具本身进行分析:
CodeCoverage.exe analyze /output:results.xml foo.coverage
注意:要进行检测,必须为您的模块发现 .pdb 文件。由于您使用 2010 进行构建,因此它们可能不适用于 2012 的 DIA,因此您可能必须使用 2012 的工具集进行重建。如果您在覆盖分析中没有看到您期望的模块,请传递/include_skipped_modules
给分析命令;将有一个“原因”属性告诉您模块被跳过的原因(排除,没有调试信息等)。
编辑:另外,与以前版本的 Visual Studio 不同,2012 的覆盖文件格式是完全独立的。模块和 .pdb 不需要在分析时出现。