GoogleTest是Google提供的C++测试框架,可以用于白盒测试,改善单元测试效率。
概念:测试程序,测试用例,测试项。一个测试程序可以有多个用例,一个用例可以包含多个测试项。
断言:预期代码执行后的效果。assert,如果出错且导致致命错误,可以退出测试程序,否则即时出错也可以执行测试。googletest用ASSERT_和EXPECT_前缀来区分是否退出测试程序。
一些宏:
ASSERT_TRUE(condition) //判断true or flash
ASSERT_EQ(exp_arg1, actual_arg2) //判断arg1和arg2是否相等
ASSERT_STREQ(exp_str1, actual_str2) //判断两个字符串是否相等
TEST(test_case_name, test_name){...} //声明一个测试,name不需要用字符串
TEST_F(test_case_name, test_name){...} //多个测试使用了类似的测试数据时使用
RUN_ALL_TESTS() //运行所有的测试,在main函数中调用
测试环境搭建
分析Makefile,依赖关系一清二楚。
从Makefile看,纯C语言环境下,是没有办法使用googletest的,因为它使用g++编译出来的.a文件,gcc未必就认。另外,Linux内核环境下也是没有办法用googletest的,因为它需要多线程支持,ms。编译选项中有链接pthread