我们想测量我们自己的自动化回归测试系统在相当大的 native 应用程序上运行的代码覆盖率。这是一个复杂的脚本测试系统,使用我们应用程序的内置脚本。它有数千个测试,不会被 MSTest 单元测试取代。
虽然我们目前使用 VS2012 (Premium) 作为 IDE,但它仍然使用 VS2010 编译器和库进行编译。如果这是获得代码覆盖率的先决条件,这种情况可能会很快改变。
我们可以为此进行单独的构建 - 检测不是问题。
我只是对阅读 MS 文档感到困惑,这些文档似乎都是从假设您使用其内置测试框架运行单元测试开始的。那时我不会费力寻找真正首先谈论对 ALM 的 native 支持的东西!
谢谢
最佳答案
Visual Studio 2012 的代码覆盖工具完全独立于测试执行系统(完全披露:我编写了它,但在我离开微软后继承它的团队删除了一些相当有用的功能)。它在 VS 2012 中从头开始重写,以便在加载到进程中而不是修改磁盘上的可执行文件时动态检测 native 代码(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 不需要在分析时出现。
关于c++ - 我们可以在没有 MSTest 的情况下在 VS2012 或 VS2010 中获得原生 C++ 代码覆盖率吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983003/