0

在我的 gtest 框架中,我模拟了一些函数并编写了一些测试用例。而且我看到我在许多测试用例中一遍又一遍地使用相同的模拟函数和 EXPECT_CALL。所以,我只是想知道我是否可以将这些常见的模拟 EXPECT_CALL 放在一个地方并简单地调用它们,这样行数就会变得更少,并且测试用例看起来更简单。

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

4

2 回答 2

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
}
于 2014-04-28T22:22:37.520 回答
0

从相对于 GTest的Google Mock 文档中,无法将 EXPECT_CALL 宏委托给函数。

更确切地说,

重要提示:Google Mock 要求在调用模拟函数之前设置期望值,否则行为未定义。特别是,您不能将 EXPECT_CALL() 和对模拟函数的调用交错。

于 2013-01-24T10:02:13.140 回答