1、简介
gtest的事件一共有3种:
1)全局的,所有案例执行前后(死亡测试案例的执行在普通案例之前执行)
2)TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后
3)TestCase级别的,每个TestCase前后
2、全局事件
要实现全局事件,必须写一个类,继承testing::Environment类,实现里面的SetUp和TearDown方法。
SetUp()方法在所有案例执行前执行
TearDown()方法在所有案例执行后执行
2.1 编写继承testing::Environment类的类
class CEnvirTest:public testing::Environment
{
public:
virtual void SetUp()
{
//初始化需要的变量值等
std::cout<<"全局事件类开始执行"<<std::endl;
}
virtual void TearDown()
{
//销毁创建的变量值等
std::cout<<"全局事件类结束执行"<<std::endl;
}
private:
//需要的参数值
};
2.2 告知gtest添加了全局事件
在main函数中通过testing::AddGlobalTestEnvironment方法将事件挂进来即可。可以写很多全局的事件类,接着部分或全部告知gtest。在调用 testing::InitGoogleTest方法前挂进去即可。
testing::AddGlobalTestEnvironment(new CEnvirTest);
3、TestSuite事件
同样需要编写一个类继承testing::Test,然后实现两个静态方法(protected):
SetUpTestCase() 方法在第一个TestCase之前执行
TearDownTestCase() 方法在最后一个TestCase之后执行
3.1 编写类结构
class CTestSuite:public testing::Test
{
protected:
static void SetUpTestCase()
{
std::cout << "TestSuite事件类开始执行"<<std::endl;
}
static void TearDownTestCase()
{
std::cout << "TestSuite事件类结束执行"<<std::endl;
}
};
3.2 编写测试案例时要使用TEST_F()宏
第一个参数必须是我们上面类的名字,代表一个TestSuite,即CTestSuite。
4、TestCase事件
挂在每个案例执行前后的,实现方式和上面的TestSuite几乎一样,不过需要实现的是SetUp方法和TearDown方法TestCase事件(protected)。
SetUp()方法在每个TestCase之前执行
TearDown()方法在每个TestCase之后执行
4.1 编写类
class CTestCase:public testing::Test
{
protected:
virtual void SetUp()
{
std::cout << "TestCase事件类开始执行"<<std::endl;
}
virtual void TearDown()
{
std::cout << "TestCase事件类结束执行"<<std::endl;
}
};
4.2 编写测试案例时要使用TEST_F()宏
第一个参数必须是我们上面类的名字,代表一个TestSuite,即CTestCase。