码迷,mamicode.com
首页 > 其他好文 > 详细

CTEST 项目

时间:2021-03-09 13:51:16      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:变量   测试框架   怎么   func   有关   initial   大小   const   优化   

第一步:拿到谷歌测试框架的头文件和库文件。  (写个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 的地址所以减去自己的偏移量就可以拿到,下一个结构体的首地址)替换数组,每多一个测试组就会新建一个节点连接起来。

技术图片

 技术图片

 技术图片

 

 

CTEST 项目

标签:变量   测试框架   怎么   func   有关   initial   大小   const   优化   

原文地址:https://www.cnblogs.com/huatouge/p/13854294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!