CTEST 项目
第一步:拿到谷歌测试框架的头文件和库文件。 (写个c文件观察它长成什么样子 并模仿他的样子让程序通过编译)
执行后长这样,然后思考要怎么去实现它 !!!
- 里面有个TEST(func, add) { } 没有返回值类型 也没有类型定义 ,所以一定是用宏实现的。
- 逻辑错了会进行报错提示,定位到文件的具体哪行。
- 打印信息包含了函数名等。
写一个test.h 和 test.c 来让他通过编译!!!
(头文件)
(源文件)
再去思考这个RUN__ALL_TESTS有什么用 就返回一个 0 ,他应该不仅仅要返回0 还要打印一些花里胡哨的信息 (打印的信息是有关函数的所以要传递函数指针)
然后我们的TEST宏替换成函数后,要让他先于主函数执行,不然他的功能就没用了。就引出这个宏__attribute__((constructor)) 放在函数前面 ,表明该函数先于主函数执行。
第二步 : 继续观察最后的输出结果 每一组测试都会先打印该组的名字
所以要将多个函数的信息传到另一个函数, 那么就用到了函数指针数组。
最后输出的结果
第三步 : 就是宏替换进行着色,大量的宏替换, 并输出保存信息和统计信息, 这里分清楚变量的定义和声明
1.颜色封装成宏, 2. 把测试也封装成一个宏
定义一个结构体进行文件中传值,进行输出统计信息
因为错误信息第三行要打印的值的类型是不确定的,所以利用泛型宏进行匹配(泛型宏只能用gcc编译 c11和c11版本上都可以使用)
第四步 : 进行优化, 将test.c里面对存放函数信息的结构体数组进行替换成链表。这样就可以动态分配大小
定义一个链表外骨骼(随时给一个结构体加上链表的结构,因为拿到下一位的地址是struct LinkNode 的地址所以减去自己的偏移量就可以拿到,下一个结构体的首地址)替换数组,每多一个测试组就会新建一个节点连接起来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具