c++ - 如何测量 CppUnit 测试覆盖率(在 win32 和 Unix 上)?

标签 c++ unit-testing cross-platform code-coverage cppunit

我有一个非常大的代码库,其中包含大量单元测试(使用 CppUnit)。 我需要计算出这些测试执行了多少代码,并且(理想情况下)生成某种报告,告诉我在每个库或每个文件的基础上,有多少代码已被执行。

关键在于:它必须完全无人看管地运行(最终在持续集成构建中),并且必须是跨平台的(嗯,至少是 WIN32 和 *nix)。

谁能推荐一个工具或一组工具来帮助我做到这一点?我不能改变 CppUnit(我也不想 - 它踢屁股),但否则我很想听听你可能有的任何建议。

干杯,

最佳答案

我应该使用哪个工具?

这个 article describes另一位开发人员对搜索 C++ 代码覆盖工具感到沮丧。作者最终的解决方案是Bullseye Coverage .

Bullseye Coverage特点:

至于 Hook 到您的持续集成,这取决于您使用的 CI 解决方案,但您可以将检测/覆盖测量步骤 Hook 到您用于自动化测试的 make 文件中。


测试 Linux 与 Windows?

只要您的所有测试在两种环境中都能正常运行,您就应该可以很好地衡量其中一种环境的覆盖率。 (虽然 Bullseye 出现 to support both platforms )。但是你为什么不在这两种环境中进行持续集成构建呢?如果您在两种环境中都向客户交付产品,那么您需要在两种环境中都进行测试。

因此,听起来您可能需要设置两台连续构建服务器,一台用于 linux 构建,另一台用于 windows 构建。也许这可以通过一些虚拟化软件(如 vmware)轻松完成。或 virtualbox .您可能不需要在两个操作系统上运行代码覆盖率指标,但绝对应该在两个操作系统上运行单元测试。

关于c++ - 如何测量 CppUnit 测试覆盖率(在 win32 和 Unix 上)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33042/

相关文章:

c# - TDD'ing 时提取类。如何测试新提取的类?

java - 错误 : "javax.servlet.ServletException: Failed to load test suite [SampleTest], Reason is [Class not found "SampleTest"] "

c++ - 哪个库用于视频和音频录制?

c++ - 将许多函数声明为类的友元

php.net 的 PHP 开始标签

c++ - 使用类中定义的类型

c++ - BOOST & GCC,未定义的 boost 引用

java - 分组测试的单元测试名称约定

node.js - 如何编写跨平台 npm 包装程序包并避免在不需要的 "conditional dependency"安装时出现 EBADPLATFORM 错误?

java - 是否存在允许跨平台错误记录和跟踪多个应用程序的工具?