工作中统计代码覆盖率,用到了gtest。
此处为GoogleTest—AdvancedGuide的译文
此处为CoderZh的一系列gtest学习笔记
gtest愚见以为,是一个测试代码中函数的一个框架。简单的函数直接给入参,复杂的函数要继承相应的类来完成全局变量,以及各种条件的初始化,最终完成测试。
断言的一些东西可以在用到的时候搜一下
总结一些注意的点,以备以后快速上手以及阅读mesos测试用例方便
gtest的事件分为一下三种:
1.全局的,所有案例执行前后。
2.TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。
3.TestCase级别的,每个TestCase前后
1>全局事件,必须写一个类,继承testing::Environment类,实现里面的SetUp和TearDown方法。
2>TestSuite级别事件需要写一个类,继承testing::Test,然后实现两个静态方法
SetUpTestCase() 和TearDownTestCase() 方法。
3>TestCase级别事件需要写一个类,继承testing::Test,然后实现SetUp()和TearDown()方法。
如果有继承,则需要用TEST_F(TestSuite,TestName)宏
参数化:
1.使同一类型的多个输入数据不写等同的测试用例(代码复用)
需要添加一个类,继承testing::TestWithParam,其中T就是参数化的参数类型。需要用TEST_P(TestSuite,TestName)宏。
class IsPrimeParamTest : public::testing::TestWithParam<int>
{
};
INSTANTIATE_TEST_CASE_P(TrueReturn, IsPrimeParamTest, testing::Values(3, 5, 11, 23, 17));
//第一个参数是测试案例的前缀,可以任意取。
//第二个参数是测试案例的名称,需要和之前定义的参数化的类的名称相同,如:IsPrimeParamTest
//第三个参数是可以理解为参数生成器,上面的例子使用test::Values表示使用括号内的参数。Google提供了一系列的参数生成的函数
TEST_P(IsPrimeParamTest, HandleTrueReturn)
{
int n = GetParam();
EXPECT_TRUE(IsPrime(n));
}
2.类型测试
3.类型参数化测试