GoogleTest(事件)-3

简介

googletest提供了多种事件机制:

  1. 全局的,所有案例执行前后。
  2. TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。
  3. TestCase级别的,每个TestCase前后。

全局事件

要实现全局事件,必须写一个类,继承testing::Environment类,实现里面的SetUp和TearDown方法。

  1. SetUp()方法在所有案例执行前执行

  2. TearDown()方法在所有案例执行后执行

class FooEnvironment : public testing::Environment
{
public:
    virtual void SetUp()
    {
        std::cout << "Foo FooEnvironment SetUP" << std::endl;
    }
    virtual void TearDown()
    {
        std::cout << "Foo FooEnvironment TearDown" << std::endl;
    }
}

添加这个全局事件,我们需要在main函数中通过testing::AddGlobalTestEnvironment方法将事件挂进来,也就是说,我们可以写很多个这样的类,然后将他们的事件都挂上去。

int _tmain(int argc, _TCHAR* argv[])
{
    testing::AddGlobalTestEnvironment(new FooEnvironment);
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

TestSuite事件

我们需要写一个类,继承testing::Test,然后实现两个静态方法

  1. SetUpTestCase() 方法在第一个TestCase之前执行

  2. TearDownTestCase() 方法在最后一个TestCase之后执行</pre>

class FooTest : public testing::Test {
 protected:
  static void SetUpTestCase() {
    shared_resource_ = new ...

;
  }
  static void TearDownTestCase() {
    delete shared_resource_;
    shared_resource_ = NULL;
  }
  // Some expensive resource shared by all tests.    static T* shared_resource_;
};

TEST_F(FooTest, Test1)
 {
    //you can refer to shared_resource here    }
TEST_F(FooTest, Test2)
 {
    //you can refer to shared_resource here    }

TestCase事件

TestCase事件是挂在每个案例执行前后的,实现方式和上面的几乎一样,不过需要实现的是SetUp方法和TearDown方法:

  1. SetUp()方法在每个TestCase之前执行
  2. TearDown()方法在每个TestCase之后执行
class FooCalcTest:public testing::Test
{
protected:
    virtual void SetUp()
    {
        m_foo.Init();
    }
    virtual void TearDown()
    {
        m_foo.Finalize();
    }

    FooCalc m_foo;
};

TEST_F(FooCalcTest, HandleNoneZeroInput)
{
    EXPECT_EQ(4, m_foo.Calc(12, 16));
}

TEST_F(FooCalcTest, HandleNoneZeroInput_Error)
{
    EXPECT_EQ(5, m_foo.Calc(12, 16));
}

文章参考:https://www.cnblogs.com/coderzh/archive/2009/04/06/1430396.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 断言 什么是断言? 在百科上是这样定义的:断言通常表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为...
    7bfedbe4863a阅读 1,690评论 0 1
  • C++单元测试框架——gtest——v_raw gtest简介 gtest是一个跨平台的C++单元测试框架。它提供...
    cxm11阅读 19,882评论 0 0
  • 本文章转载于搜狗测试 单元测试初体验 背景:总结最近一段时间内崩溃,发现输入法核心层面的崩溃比较多而且好多是黑盒测...
    夜境阅读 394评论 0 0
  • 一、自动化测试所属分类(站在代码可见度角度分类) 1. 黑盒测试(功能测试)2. 灰盒测试(接口测试)3. 白盒测...
    MAVIS_42bf阅读 963评论 0 0
  • 洞见SELENIUM自动化测试 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出...
    厲铆兄阅读 6,777评论 3 47