在gmock / gtest中包装常见的模拟函数

时间:2013-01-07 16:04:59

标签: unit-testing googletest gmock

在我的gtest框架中,我嘲笑了一些函数并编写了一些测试用例。我发现在许多测试用例中,我一直使用相同的模拟函数和EXPECT_CALL。所以,我只是想知道我是否可以将这些常见的模拟EXPECT_CALL放在一个地方并简单地调用它们,因此行数变少,测试用例看起来更简单。

我尝试将它们放在一个函数中并尝试调用该函数,但它给了我许多编译问题。有人有任何想法吗?

2 个答案:

答案 0 :(得分:0)

从Google Mock doc relative to GTest,无法将EXPECT_CALL宏委托给函数。

更准确地说,

  

重要提示:Google Mock需要在此之前设置预期   调用mock函数,否则行为未定义。在   特别是,你不能交错EXPECT_CALL()和调用   模拟功能。

答案 1 :(得分:0)

EXPECT调用需要在测试用例或测试夹具中。您可以使用测试夹具获得所需的结果。

class MyTest : public ::testing::test
{
    MyTest // can use ctor
    {
        EXPECT_CALL(mock, ...);
    }

    SetupA()  // or can use a member function
    {
        EXPECT_CALL(mock, ...);
        EXPECT_CALL(mock, ...);

    }

    MockObject mock;
};

TEST_F(MyTest, TestOne)
{
    EXPECT_CALL(mock, ...);
    // do something - two expectations are set
}

TEST_F(MyTest, TestTwo)
{
    SetupA();
    // do something - three expectations are set
}