0

私の gtest フレームワークでは、いくつかの関数をモックし、いくつかのテストケースを作成しました。そして、多くのテストケースで、同じモック関数を EXPECT_CALL で何度も使用したことがわかります。そこで、これらの共通モック EXPECT_CALL を 1 か所に配置して呼び出すだけで、行数が減り、テストケースがよりシンプルに見えるかどうか疑問に思っています。

それらを1つの関数に入れて関数を呼び出そうとしましたが、多くのコンパイルの問題が発生しました。誰でも何か考えがありますか?

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 docから、関数に EXPECT_CALL マクロを委譲することはできません。

より正確に、

重要な注意: Google Mock では、モック関数が呼び出される前に期待値を設定する必要があります。それ以外の場合、動作は未定義です。特に、EXPECT_CALL() とモック関数の呼び出しをインターリーブしてはなりません。

于 2013-01-24T10:02:13.140 に答える