以下是初步学习后, 根据理解的要点总结, 也为了方便以后回顾
一、设计GoogleTest的几个考虑:
1、现有的框架不能满足谷歌的需要。谷歌需要一个方便测试的框架。
*GTest可以在不支持有异常、RTTI、STL的情况下运行。能够在windows, linux, Mac OS X和一些嵌入式系统下运行。
2、提供可以继续往下运行的断言(EXPECT_*),方便可以报告一次测试里的多个错误
3、很容易编写断言,例如ASSERT_EQ(5, Foo(i)) << "where i = " << i;
4、允许扩展和定制断言种类,提供EXPECT_PRED*
5、Death tests能很方便的确保在正确的条件下触发你的断言
6、帮助你重现问题和定位问题
二、不提供在多个线程同时运行测试,如果想并行运行测试,最好在不同的进程运行(有难度,具体难度说的不是很清楚)
三、GTest断言不采用异常的初始动机是为了能够在禁止抛出异常的工程里使用,后来发现有些其他的好处:
1、在c++的析构函数里可以安全使用GTest的断言
2、一次执行后,可以通过EXPECT*来报告多个错误,而不用中断运行
3、如果调用你的用户代码有捕获异常的代码,也可以保证正确的执行用例
四、死亡测试(death test)是用断言实现
1、 包括死亡测试的定义,和怎样运行死亡测试的说明和期望死亡测试结果的说明。
2、ASSERT_DEATH是调用fork()来创建一个子进程来运行death test。因而一些内存状态的修改是在子进程进行,不会修改父进程。
3、死亡测试不太适合父进程有多个线程。有线程安全版本的死亡测试(不过不推荐)