正片开始
在之前的文章中, 介绍了如何实现一个类似gtest的单元测试框架, 完整的项目代码可以参考这里: https://github.com/kfggww/cutest . 近期对cutest的实现做了一些修改, 包括:
- Test Suite的声明宏, 修改为TEST_SUITE
- 增加Test Suite的声明宏TEST_SUITE_WITH. 可传递Suite的init和cleanup函数, 在Suite中每个Case运行之前和之后分别被调用, 用于公共资源的初始化和回收.
- Test Case的定义宏, 修改为TEST_CASE
- 增加Test Suite和Test Case的过滤功能. 通过命令行参数, 过滤出要运行哪些测试
- 优化测试报告输出
- 增加json格式的测试结果输出
- 移除各种ASSERT
- 修改Test Case返回测试结果的方式. Case中需返回TEST_PASS/TEST_FAIL/TEST_IGNORE, 标记测试结果
- 上传至Ubuntu PPA, 方便安装使用
对于Test Suite以及Test Case如何注册到cutest之中, 实现原理还是使用”constructor”属性函数, TEST_SUITE/TEST_CASE宏会拼接出函数实现, 在程序运行时, 在main函数调用之前, 这些”constructor”函数被调用, 完成Suite以及Case的注册. 具体实现可参考代码片段, 或者上一篇文章中的介绍.
详细信息看下面的视频吧:
结尾彩蛋
更多linux平台技术研究和讨论, 可以进入我的qq群: 838923389