CTEST 项目,第1张

第一步:拿到谷歌测试框架的头文件和库文件。  (写个c文件观察它长成什么样子    并模仿他的样子让程序通过编译)

CTEST 项目,第2张

CTEST 项目,第3张

 

执行后长这样,然后思考要怎么去实现它   !!! 

  • 里面有个TEST(func, add) { }  没有返回值类型 也没有类型定义 ,所以一定是用宏实现的。
  • 逻辑错了会进行报错提示,定位到文件的具体哪行。
  • 打印信息包含了函数名等。

CTEST 项目,第4张CTEST 项目,第5张

 

 

写一个test.h   和  test.c  来让他通过编译!!!

CTEST 项目,第6张    (头文件)

 

CTEST 项目,第7张    (源文件)

 

再去思考这个RUN__ALL_TESTS有什么用 就返回一个 0  ,他应该不仅仅要返回0  还要打印一些花里胡哨的信息 (打印的信息是有关函数的所以要传递函数指针)

然后我们的TEST宏替换成函数后,要让他先于主函数执行,不然他的功能就没用了。就引出这个宏__attribute__((constructor))  放在函数前面 ,表明该函数先于主函数执行。

CTEST 项目,第8张

 第二步 : 继续观察最后的输出结果   每一组测试都会先打印该组的名字

     所以要将多个函数的信息传到另一个函数, 那么就用到了函数指针数组。

CTEST 项目,第9张

CTEST 项目,第10张

CTEST 项目,第11张

 最后输出的结果

CTEST 项目,第12张

 第三步 : 就是宏替换进行着色,大量的宏替换, 并输出保存信息和统计信息, 这里分清楚变量的定义和声明

1.颜色封装成宏,  2. 把测试也封装成一个宏

CTEST 项目,第13张CTEST 项目,第14张

 定义一个结构体进行文件中传值,进行输出统计信息

CTEST 项目,第15张

CTEST 项目,第16张

CTEST 项目,第17张

CTEST 项目,第18张

 因为错误信息第三行要打印的值的类型是不确定的,所以利用泛型宏进行匹配(泛型宏只能用gcc编译 c11和c11版本上都可以使用)

CTEST 项目,第19张

CTEST 项目,第20张

 第四步 : 进行优化, 将test.c里面对存放函数信息的结构体数组进行替换成链表。这样就可以动态分配大小

 定义一个链表外骨骼(随时给一个结构体加上链表的结构,因为拿到下一位的地址是struct LinkNode 的地址所以减去自己的偏移量就可以拿到,下一个结构体的首地址)替换数组,每多一个测试组就会新建一个节点连接起来。

CTEST 项目,第21张

 CTEST 项目,第22张

 CTEST 项目,第23张

 

 

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » CTEST 项目

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情