我有一个非常大的代码库,其中包含大量单元测试(使用 CppUnit)。 我需要计算出这些测试执行了多少代码,并且(理想情况下)生成某种报告,告诉我在每个库或每个文件的基础上,有多少代码已被执行。
关键在于:它必须完全无人看管地运行(最终在持续集成构建中),并且必须是跨平台的(嗯,至少是 WIN32 和 *nix)。
谁能推荐一个工具或一组工具来帮助我做到这一点?我不能改变 CppUnit(我也不想 - 它踢屁股),但否则我很想听听你可能有的任何建议。
干杯,
最佳答案
我应该使用哪个工具?
这个 article describes另一位开发人员对搜索 C++ 代码覆盖工具感到沮丧。作者最终的解决方案是Bullseye Coverage .
- Cross Platform Support (win32、unix 和嵌入式),(支持 linux gcc 编译器和 MSVC6)
- Easy to use (在几个小时内启动并运行)。
- Provides "best" metrics :函数覆盖率和条件/决策覆盖率。
- 使用源代码检测。
至于 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/