google test原理

初看google test,只觉得厉害了我的哥。

竟然可以定义重名函数,

竟然可以这样在main函数运行在上面TEST函数…

有没有很神奇,查了一下源码,先贴上再简单分析一下原理:

原来每个TEST(..){..}不是定义函数,而是一个宏,

这个宏做的工作是:

1、定义了一个新类,名字通过TEST参数指定;

2、通过MakeAndRegisterTestInfo函数,将类注册进全局;

3、宏定位最后面是:
void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
即TEST(…){ } 中函数体的部分就是这个类的某个成员函数。

其实就我贴的这一段代码还有一些细节没看懂,就是具体是如何注册进全局某个容器的,但已经不妨碍我理解和使用google test了,就不深究了。

 

PS:

参考里第二个链接是一个人自己仿造google test写的一个demo,挺让人印象深刻的。

参考:

https://github.com/google/googletest

http://www.cnblogs.com/cutepig/archive/2009/03/15/1412640.html

1 评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注