独望枫

人在尘世间,有缘自相见,变化千千万,未开窍,已迷恋
posts - 43, comments - 0, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2022年3月29日

     摘要: 本文将生成覆盖率脚本化处理过程。

设计思路:通过脚本对qt工程进行编译并运行,然后再通过脚本收集必要的受关注的覆盖率信息进行生成覆盖率报告,最后查看报告。
  阅读全文

posted @ 2022-03-29 23:21 小菜枫 阅读(35) | 评论 (0)编辑 收藏

     摘要: 前文提到添加了编译参数 -fprofile-arcs 、 -ftest-coverage 已经生成了gcno文件,单元测试运行后也产生了gcda文件。

并且我们已经安装好lcov,那么该如何使用lcov来生成覆盖率报告呢?
  阅读全文

posted @ 2022-03-29 23:16 小菜枫 阅读(50) | 评论 (0)编辑 收藏

     摘要: lcov是GCC覆盖率测试工具gcov的前端图形工具。

有些Linux版本的源提供了包直接安装,可以尝试使用对应包管理命令行直接安装
  阅读全文

posted @ 2022-03-29 23:11 小菜枫 阅读(207) | 评论 (0)编辑 收藏

     摘要: gcov是一个代码覆盖率统计的工具。不用单独下载,伴随GCC一起发布(即你安装有GCC,也就有了gcov这个工具)。与GCC协同使用、分析被测代码,有助于创建更稳健的代码,并能发现程序中未经测试的部分。

基于gcov是隶属于GCC,所以其仅适用于使用GCC编译的代码……
  阅读全文

posted @ 2022-03-29 23:07 小菜枫 阅读(49) | 评论 (0)编辑 收藏

2022年3月27日

     摘要: 随着事物的接触越来越多,了解的越来越深入,我们总会发现一些新的问题或者不足。
就像前文提到的一样,我们在面对有对象的虚函数依赖的时候,可以使用gmock框架来为我们提供方便的模拟期望值,以便我们能撇除外界的影响(依赖)从逻辑上设计单元测试并持续的进行,但是并非所有对象的函数都设计成了虚函数,那么我们在面对依赖对象的非虚函数这个问题时,又该如何解决?
这个问题,已经有先行者遇到并且提出了解决方案:手动打桩、使用hook技术。
  阅读全文

posted @ 2022-03-27 22:47 小菜枫 阅读(113) | 评论 (0)编辑 收藏

     摘要: 在面向对象的开发过程中,由于需要将各种属性或者事物按一定的规律抽象为独立的一个对象,然后按需进行调用,如此一来,对象之间的依赖便无可避免,设计不好更会产生双向依赖、交叉依赖等困境,那么我们在面对这种对象间依赖的情况下,该如何进行单元测试呢?  阅读全文

posted @ 2022-03-27 22:37 小菜枫 阅读(60) | 评论 (0)编辑 收藏

     摘要: 类的private函数相比public函数,测试套件定义的对象无法直接访问;相比protected函数,亦无法通过前文提到的FRIENT_TEST来使用,那么我们要怎么才能解决这个问题呢?  阅读全文

posted @ 2022-03-27 22:31 小菜枫 阅读(26) | 评论 (0)编辑 收藏

     摘要: 类的protected函数相比public函数,测试套件定义的对象无法直接访问,gtest提供了一个宏FRIENT_TEST,这个宏定义如下:

#define FRIEND_TEST(test_case_name, test_name) \
friend class test_case_name##_##test_name##_Test  阅读全文

posted @ 2022-03-27 22:04 小菜枫 阅读(48) | 评论 (0)编辑 收藏

     摘要: 类的public函数在面向对象编程中是最常见亦是最常规的函数,但是其单元测试的展开跟普通函数并无二致[这里指的是没有其他对象依赖的情况,有依赖的场景请参考本系列的有依赖对象的场景文章],下面来看看具体如何实施。  阅读全文

posted @ 2022-03-27 21:36 小菜枫 阅读(22) | 评论 (0)编辑 收藏

     摘要: 普通函数在该 [gtest场景案例] 系列中,指的是普通的全局函数,既没有public等权限关键字,也没有static/const等关键字.  阅读全文

posted @ 2022-03-27 21:17 小菜枫 阅读(43) | 评论 (0)编辑 收藏