質問

C ++でユニットテストに入るだけです。私が進むにつれて、いくつかのスタブクラスを書く必要があるようです。私の理解は、模擬とスタブの間に違いがあることです。基本的に、モックはオブジェクトで何かが起こったとき(検証)をテストしているときに、スタブがテストを容易にするだけであるようです。 ock笑のために、Googlemockを使用することはできますが、スタブ(Ala RhinomocksのGenerateStub)を作成するために何も表示されません。

自動的に生成されたスタブを取得する方法はありますか? Googlemockにはスタブのサポートがありますか?または、テスト用のスタブを手動で作成する必要がありますか?

役に立ちましたか?

解決

パズルの不足している部分は、メソッドに期待を設定する必要がなく、代わりにデフォルトの返品値を設定できることだと思います。

模擬

のすべての議論と例Googleはダミーのための模擬「期待の設定に焦点を当てています。すべてが次のようなコードを使用することについて語っています。

EXPECT_CALL(turtle, PenDown())
      .Times(AtLeast(1));

それはあなたがock笑するために望むものですが、スタブをするためにあなたは期待を持っていません。そのイントロを読んだ後、私はgooglemockをスタブに使用する方法がわかりませんでした。

スタブ

Ratkokのコメントは、デフォルトの返品値を設定する方法を見つけるようになりました。モックされたオブジェクトの返品値を指定する方法は次のとおりですが、期待はありません。

ON_CALL(foo, Sign(_))
      .WillByDefault(Return(-1));

http://code.google.com/p/googlemock/wiki/cookbook#setting_the_default_actions_for_a_mock_method

Googlemockは、expect_callがないメソッドを呼び出すと警告を発しているようです。どうやらあなたは彼らを使用してこの警告を防ぐことができます Nicemock 構成またはあなたはそれを無視することができます。さらに、代わりに期待を使用して警告を回避できるように見えます(スタブの良いアイデアかどうかはわかりません)。から Google Mock FAQ:

EXPECT_CALL(foo, Bar(_))
    .WillRepeatedly(...);

それはまさに私が理解しようとしていたものだと思います。

アップデート

これが機能することを確認できます。 Google TestとともにGoogleMockを使用してユニットテストを作成し、ON_CALLを使用してクラスの方法を突き出すことができました。

他のヒント

模擬とスタブの唯一の違いは、モックが動作を強制することですが、スタブではそうではありません。

私が知る限り、Google Mockのモックは実際にはデフォルトでスタブです。さまざまな方法でアサーションを行う場合にのみ、行動を実施します。

これを見てください: スタブゲン そして同様の議論 ここ.

この質問 多分有用/関連しています。

Google Mocksについては、現在のプロジェクトでそれを使用して、スタブの実装を完全に自動化します。事実上、スタブコードベース全体がGoogle Mocksを使用して実装されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top