1

如果 google mocked 方法的调用次数超过预期,如何使 google 测试失败?

这是示例:

class MockIO : iIO
{
    MOCK_METHOD1(IO_Read, void (uint8_t));
};

TEST(case, test)
{
    MockIO io;
    EXPECT_CALL(io, IO_Read(0x01)).Times(10);
    for (i=0; i<20; i++)
        io.IO_Read(0x01);
}

据我了解,我应该尝试

EXPECT_CALL(io, IO_Read(0x01)).Times(10).Throw(exception);

但在嵌入式项目中没有使用异常。

有任何想法吗?

4

2 回答 2

3

我认为您应该使用严格的模拟进行测试。

TEST(case, test){
StrictMock<MockIO> io;
EXPECT_CALL(io, IO_Read(0x01)).Times(10);

使用 Strictmock 时,非预期调用会导致测试失败。

http://code.google.com/p/googlemock/wiki/CookBook#Nice_Mocks_and_Strict_Mocks

于 2012-03-20T23:19:09.977 回答
1

但在嵌入式项目中没有使用异常。

没关系,因为您不应该构建要在嵌入式平台上运行的单元测试,而是要在您的 PC 上运行。

设置期望可以简化为:

EXPECT_CALL(io, IO_Read(0x01)).Times( AtLeast( 10 ) );

不满足条件将引发异常。

要使 googlemock 库在预期失败时抛出异常:

::testing::GTEST_FLAG(throw_on_failure) = true;
于 2011-11-28T16:32:19.730 回答