7

gmockを使用して、レガシーコードの依存関係をモックしています。クラスの1つには、11個のパラメーターを持つメソッドがあります。MOCK_METHOD11_WITH_CALLTYPEを使用してモックを作成しようとすると、このマクロが存在しないことがわかりました。gmockは、最大10個のパラメーターのみをサポートします。これについて何を提案しますか?このメソッドをダミーボディで実装しますか?または、マクロをコピーして拡張しますか?ありがとう!

PS、私は現在私のテストでこのメソッドをモックする必要はありませんが、おそらく将来的にそうする必要があります。

よろしくお願いします、

4

3 に答える 3

6

パラメータが10を超えるメソッドは、問題の兆候である可能性があります。特定のケースに役立つ回避策を提案できますが、モックとは別に良いアイデアかもしれません。グループとして意味のあるいくつかのパラメーターを取り、それらを構造体に集約します。次に、その構造体のインスタンスを引数としてメソッドに渡します。したがって、11個の引数の代わりに3個または4個の引数を使用できます。これは、発生しているモックライブラリの問題に役立つだけでなく、非常に多くの引数を持つメソッドは通常、サイトを呼び出します。

于 2013-03-21T04:22:06.693 に答える
1

誰かがより多くのgmock引数を必要とする場合、ここにヘッダーのみの拡張があります:gmock-more-args

于 2017-10-12T16:54:25.133 に答える
1

あなたがモックしようとしている方法は純粋な仮想です。既存のコードを変更せずに行ったことは次のとおりです。

struct ParamsMoreThanTen
{
  Param_Type param_1;
  Param_Type param_N;
};

MOCK_METHOD1(methodWithMoreThanTenParms, methodReturnType(ParamsMoreThanTen params));

methodReturnType methodWithMoreThanTenParms(
    Param_Type param_1,
    Param_Type param_N) override
{

  return    methodWithMoreThanTenParms(ParamsMoreThanTen
  {
    Param_Type param_1,
    Param_Type param_N
  });

};
于 2019-04-18T15:33:03.640 に答える