1

Googleモックメソッドが予想以上に呼び出された場合、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 を使用すると、予期しない呼び出しが原因で testfailure が発生します。

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 に答える