GoogleTest(事件)-3

簡(jiǎn)介

googletest提供了多種事件機(jī)制:

  1. 全局的,所有案例執(zhí)行前后。
  2. TestSuite級(jí)別的,在某一批案例中第一個(gè)案例前,最后一個(gè)案例執(zhí)行后。
  3. TestCase級(jí)別的,每個(gè)TestCase前后。

全局事件

要實(shí)現(xiàn)全局事件,必須寫一個(gè)類,繼承testing::Environment類,實(shí)現(xiàn)里面的SetUp和TearDown方法。

  1. SetUp()方法在所有案例執(zhí)行前執(zhí)行

  2. TearDown()方法在所有案例執(zhí)行后執(zhí)行

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

添加這個(gè)全局事件,我們需要在main函數(shù)中通過(guò)testing::AddGlobalTestEnvironment方法將事件掛進(jìn)來(lái),也就是說(shuō),我們可以寫很多個(gè)這樣的類,然后將他們的事件都掛上去。

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

TestSuite事件

我們需要寫一個(gè)類,繼承testing::Test,然后實(shí)現(xiàn)兩個(gè)靜態(tài)方法

  1. SetUpTestCase() 方法在第一個(gè)TestCase之前執(zhí)行

  2. TearDownTestCase() 方法在最后一個(gè)TestCase之后執(zhí)行</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事件是掛在每個(gè)案例執(zhí)行前后的,實(shí)現(xiàn)方式和上面的幾乎一樣,不過(guò)需要實(shí)現(xiàn)的是SetUp方法和TearDown方法:

  1. SetUp()方法在每個(gè)TestCase之前執(zhí)行
  2. TearDown()方法在每個(gè)TestCase之后執(zhí)行
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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 斷言 什么是斷言? 在百科上是這樣定義的:斷言通常表示為一些布爾表達(dá)式,程序員相信在程序中的某個(gè)特定點(diǎn)該表達(dá)式值為...
    7bfedbe4863a閱讀 1,812評(píng)論 0 1
  • C++單元測(cè)試框架——gtest——v_raw gtest簡(jiǎn)介 gtest是一個(gè)跨平臺(tái)的C++單元測(cè)試框架。它提供...
    cxm11閱讀 19,975評(píng)論 0 0
  • 本文章轉(zhuǎn)載于搜狗測(cè)試 單元測(cè)試初體驗(yàn) 背景:總結(jié)最近一段時(shí)間內(nèi)崩潰,發(fā)現(xiàn)輸入法核心層面的崩潰比較多而且好多是黑盒測(cè)...
    夜境閱讀 416評(píng)論 0 0
  • 一、自動(dòng)化測(cè)試所屬分類(站在代碼可見度角度分類) 1. 黑盒測(cè)試(功能測(cè)試)2. 灰盒測(cè)試(接口測(cè)試)3. 白盒測(cè)...
    MAVIS_42bf閱讀 1,035評(píng)論 0 0
  • 洞見SELENIUM自動(dòng)化測(cè)試 寫在最前面:目前自動(dòng)化測(cè)試并不屬于新鮮的事物,或者說(shuō)自動(dòng)化測(cè)試的各種方法論已經(jīng)層出...
    厲鉚兄閱讀 6,836評(píng)論 3 47

友情鏈接更多精彩內(nèi)容