Gtest和Gmock使用指南 (7) - 樁掉C++類

有被測函數(shù)如下,該函數(shù)使用了一個接口類。我們測試的時候,這個接口類的實現(xiàn)是要用gmock打樁打掉的。

int FuncToBeTested(SomeInterface & if, std::string & param) {
    return if.some_func(param) == true ? 1 : -1;
}

接口類的定義如下:

class SomeInterface {
public:
    virtual bool some_func(std::string & some_param) = 0;
};

使用Gmock樁掉這個接口類的實現(xiàn):

class MockInterfaceImpl : public SomeInterface {
public:
    MOCK_METHOD1(some_func, bool(std::string & param));
};

MOCK_METHOD1中的1表示樁掉的函數(shù)只有一個入?yún)ⅰ?/p>

完整的示例代碼如下:

$ cat Test.cpp 
#include <iostream>
#include <gtest/gtest.h>
#include <gmock/gmock.h>

class SomeInterface {
public:
    virtual bool some_func(std::string & param) = 0;
};

class MockInterfaceImpl : public SomeInterface {
public:
    MOCK_METHOD1(some_func, bool(std::string & param));
};

int FuncToBeTested(SomeInterface & interface, std::string param) {
    return interface.some_func(param) == true ? 1 : -1;
}

TEST(TestSuiteName, TestCaseName) {
    MockInterfaceImpl mock_if_impl;
    EXPECT_CALL(mock_if_impl, some_func)
    .Times(::testing::AtLeast(1))
    .WillOnce(::testing::Return(true));

    int ret_value = FuncToBeTested(mock_if_impl, "SomeString");

    EXPECT_EQ(ret_value, 1);
}
$ g++ Test.cpp -l gtest -l gtest_main -l gmock -l pthread && ./a.out
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 序言 要寫出好的測試代碼,必須精通相關(guān)的測試框架。對于Golang的程序員來說,至少需要掌握下面四個測試框架: G...
    _張曉龍_閱讀 24,269評論 7 43
  • 序言 要寫出好的測試代碼,必須精通相關(guān)的測試框架。對于Golang的程序員來說,至少需要掌握下面四個測試框架: G...
    Aedan閱讀 2,432評論 0 0
  • 序言 要寫出好的測試代碼,必須精通相關(guān)的測試框架。對于Golang的程序員來說,至少需要掌握下面四個測試框架: G...
    _張曉龍_閱讀 39,241評論 3 48
  • 序言 要寫出好的測試代碼,必須精通相關(guān)的測試框架。對于Golang的程序員來說,至少需要掌握下面四個測試框架: G...
    _張曉龍_閱讀 20,304評論 4 16
  • 什么是單元測試 單元測試是軟件開發(fā)過程中的一種質(zhì)量保證手段。最初的來源是想模仿對硬件芯片做單元測試那樣,在軟件中也...
    MagicBowen閱讀 22,615評論 0 18

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