c++ - 我们可以在没有 MSTest 的情况下在 VS2012 或 VS2010 中获得原生 C++ 代码覆盖率吗?

标签 c++ visual-studio-2012 code-coverage

我们想测量我们自己的自动化回归测试系统在相当大的 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/

相关文章:

c++ - 为什么预处理器用 Borland C++ 识别枚举值而不用 Visual C++?

C++ 可能同时读取 int 和 string

c++ - 如何在 Fedora 中编译简单的 allegro 文件?

visual-studio-2012 - 如何强制 Visual Studio 不添加 GlobalSection(Performance) 部分?

grails - 如何安装和使用Grails测试覆盖率?

salesforce - 代码覆盖率失败 您的代码覆盖率为 72%。您需要至少 75% 的覆盖率才能完成此部署

c++ - 如何破解 ffmpeg 以将 I 帧视为关键帧?

unit-testing - Web 应用程序的 Visual Studio 2012 编码 UI 测试 - 代码覆盖率

c# - Visual Studio 和循环依赖问题

c++ - 暴力破解不同输入导致程序崩溃的策略是什么?