gtest一些有用的技巧

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次

发表评论?

1 条评论。