gtest一些有用的技巧
(1)重载<<操作符,在用例执行失败时,输出一些提示信息。
EXPECT_EQ(value1, value2) << "output something";
(2)布尔型系列断言
ASSERT_EQ
ASSERT_NE
ASSERT_LT
ASSERT_LE
ASSERT_GT
ASSERT_GE
(3)字符串型系列断言
ASSERT_STRE
ASSERT_STRNE
ASSERT_STRCASEEQ
ASSERT_STRCASENE
注:(2)(3)中所有ASSERT都对应类似的EXPECT断言;
(4)全局事件
实现一个继承testing::Environment的类,并实现SetUp和TearDown方法,
在这两个函数内可分别实现case执行前需要进行的全局初始化与case执行后需要进行的全局析构。
例如:执行用例前连接mysql,执行用例后断开mysql
class MysqlEnvironment : public testing::Environment { public: virtual void SetUp() { //mysql connect init } virtual void TearDown() { //mysql close uninit } };
当然,main函数中要告诉gtest,添加这个全局事件。
int main(int argc, char** argv) { testing::AddGlobalTestEnvironment(new MysqlEnvironment); ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
与全局事件类似的,还有TestSuite事件和TestCase事件。
(5)运行参数
main函数内执行了
::testing::InitGoogleTest(&argc, argv);
可以看到,gtest是能够接收外界参数的。
参数说明:
--gtest_list_tests:只显示用例名称;
--gtest_filter:只执行匹配的用例,例如./foo_test --gtest_filter=*foo*,只执行用例名包含foo的用例
--gtest_repeat:用例执行次数,例如./foo_test --gtest_repeat=1000 --gtest_filter=foo,foo这个用例执行1000次
这个文章很好:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html