如果预期调用过度饱和,Google 测试/模拟测试会失败

发布于 2024-12-18 12:58:12 字数 425 浏览 0 评论 0原文

如果谷歌模拟方法被调用的次数超过预期次数,如何使谷歌测试失败?

这是示例:

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

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

有什么想法吗?

How can I make google test fail if google mocked method is called more than expected times?

Here is the example:

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

As I understand I should try

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

But in embedded projects exceptions not used.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黯淡〆 2024-12-25 12:58:12

我认为你应该在测试中使用严格的模拟。

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

I think you should use strict mocks for your test.

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

When using a Strictmock, not expected calls cause a testfailure.

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

幽蝶幻影 2024-12-25 12:58:12

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

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

设置期望可以简化为:

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

未能满足条件将引发异常。

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

::testing::GTEST_FLAG(throw_on_failure) = true;

But in embedded projects exceptions not used.

It doesn't matter, because you should not build your unit test to be run on the embedded platform, but for your PC.

Setting the expectations can be reduced to this :

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

Failing to satisfy the condition is going to throw an exception.

To enable googlemock library to throw exceptions on failed expectations :

::testing::GTEST_FLAG(throw_on_failure) = true;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文