gtest事件机制

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;
  }

扫描二维码关注公众号,回复: 8714492 查看本文章

  virtual void TearDown()
  {
  std::cout << "TestCase事件类结束执行"<<std::endl;
  }
};

4.2 编写测试案例时要使用TEST_F()宏

  第一个参数必须是我们上面类的名字,代表一个TestSuite,即CTestCase。

猜你喜欢

转载自www.cnblogs.com/Sheenagh/p/12215358.html