分享

CTEST 项目

 python_lover 2022-12-24 发布于北京

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

 

 

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多