私の gtest フレームワークでは、いくつかの関数をモックし、いくつかのテストケースを作成しました。そして、多くのテストケースで、同じモック関数を EXPECT_CALL で何度も使用したことがわかります。そこで、これらの共通モック EXPECT_CALL を 1 か所に配置して呼び出すだけで、行数が減り、テストケースがよりシンプルに見えるかどうか疑問に思っています。
それらを1つの関数に入れて関数を呼び出そうとしましたが、多くのコンパイルの問題が発生しました。誰でも何か考えがありますか?
私の gtest フレームワークでは、いくつかの関数をモックし、いくつかのテストケースを作成しました。そして、多くのテストケースで、同じモック関数を EXPECT_CALL で何度も使用したことがわかります。そこで、これらの共通モック EXPECT_CALL を 1 か所に配置して呼び出すだけで、行数が減り、テストケースがよりシンプルに見えるかどうか疑問に思っています。
それらを1つの関数に入れて関数を呼び出そうとしましたが、多くのコンパイルの問題が発生しました。誰でも何か考えがありますか?
呼び出しは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
}
GTest に関連するGoogle Mock docから、関数に EXPECT_CALL マクロを委譲することはできません。
より正確に、
重要な注意: Google Mock では、モック関数が呼び出される前に期待値を設定する必要があります。それ以外の場合、動作は未定義です。特に、EXPECT_CALL() とモック関数の呼び出しをインターリーブしてはなりません。