問題タブ [googlemock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++、google test/mock: テストへのアサーションとオブジェクト型
私はこれを持っています(実際にはそうではありませんが、単なる例です):
関数の結果の型を確認する必要があります (ここでは意味がありません。私の例はもっと複雑です)、Google のテスト/モックはこの種のアサーションをサポートしていますか?
A< T > で EXPECT_THAT を試してみましたが、うまくいきません。
ありがとう。
c++ - モックを使用して反復コードをテストする-それは理にかなっていますか?
モックを使用してアルゴリズムをテストしたいと思います。アルゴリズム(現在の実装では)は、複数のパスでコンテナクラスを反復処理し、そこからset()sとget()sの値を取得します。テストの目的は、コンテナに保存されている最終結果を確認することです。最終的な値は、パスの間に読み書きされる値によって異なります。たとえば、任意の要素の値は、アルゴリズムが終了するまで複数回変更される可能性があり、ほとんどの場合、反復nの結果としての値は、反復n-1後の値に依存します。
私はモックのアイデアが好きで、計算が終了したときだけでなく、発生したアルゴリズムの誤った動作を検証できるので、上記のシナリオでそれらを使用したいと思います。ただし、これが実際に良いアイデアであるかどうかはわかりません。これは、モックの期待値を現在の実装に近づける必要があるためです(たとえば、 "expect get(element n)and return x、then set(要素n、値x + 1)、別のget(n)、x + 1を返し、set(n、x + 2)などを期待します。 ")
中間値が期待どおりであることを確認できますが、そのような期待はテストの目的と矛盾し(アルゴリズムが正しい最終値を計算することを確認します)、実装が変更された場合、最終的な値。
今私の質問:私は何かが欠けていますか?それにもかかわらず、このシナリオでモックを使用する良い方法はありますか?それとも、ここでそれらを使用することは単に意味がありませんか?他の人はこの問題にどのように対処しますか?
最後のコメント:私はc ++コードをテストし、googlemockを使用することについて話しているのですが、それがあなたの答えに何か違いをもたらすのであれば。
ps:ここでグーグルと記事をチェックしました(特に反復的な振る舞いをモックする-戻り値を増やすという問題にのみ取り組んでいます)が、問題に近いものは見つかりませんでした。
c++ - 戻り値を指定しようとするとコンパイルエラーが発生するGoogleMock
C ++/QtアプリケーションにGoogleTestとGoogleMockを使用しています。私がこれを試したちょうど今まで、私はこのセットアップで大きな成功を収めてきました:
これをコンパイルしようとすると、gccから次のエラーメッセージが表示されます。
それが役立つ場合は、VertexRow
はaのtypedef
でありboost::shared_array<Vertex>
、は有効な空のコンストラクターを持つです。Vertex
struct
QList
これは私がテストのために書いたもののエラーですか、それともまたはを使用することとの非互換性shared_array
ですか?
解決 策VJoの推奨事項に従った後、テストをコンパイルして実行しましたが、クラッシュしました。
のデフォルトの戻り値がなかったためですpopAllRows_impl()
。デフォルトを追加しました:
私にとって、SetUp()
そしてすべてが順調です。VJoが指摘したように、WillOnce()はありませんが、forON_CALL
がありEXPECT_CALL
、クックブックでこれを見逃しました。
c++ - Google Mock でスマート ポインターの戻り値の型を持つメソッドを使用できますか?
スマート ポインターを返すファクトリがあります。使用するスマート ポインターに関係なく、Google Mock にファクトリ メソッドをモックさせることができません。
モック オブジェクトは、すべてのメソッドが仮想である純粋な抽象インターフェイスの実装です。私はプロトタイプを持っています:
そして私は得る:
スマート ポインターでポイントされる型が定義されます。
そして、プライベートと宣言されたコンストラクターの1つにアクセスしようとしていると思いますが、その理由はわかりません。これが std::auto_ptr の場合、コピー コンストラクターがないというエラーが表示され、混乱しました。
とにかく、スマート ポインターを返すメソッドをモックする方法はありますか? または、工場を建設するためのより良い方法はありますか? 生のポインター (blech...) を返す唯一の解決策はありますか?
私の環境は Visual Studio 2010 Ultimate と Windows 7 です。CLI は使用していません。
c++ - 予想される呼び出しが過飽和の場合、Google Test/Mock テストは失敗します
Googleモックメソッドが予想以上に呼び出された場合、Googleテストを失敗させるにはどうすればよいですか?
次に例を示します。
私が理解しているように、私は試してみるべきです
ただし、組み込みプロジェクトでは例外は使用されません。
何か案は?
c++ - テスト終了時に Googlemock が誤ってエラーを報告する。私は何を間違っていますか?
Googlemock がテスト終了時に問題を誤って報告しています。私は何を間違っていますか?私はgooglemockのドキュメントを精査しましたが、完全な例はなく、私が抱えている問題を説明するものは何もありません.
私が得るエラーは次のとおりです。
簡単なテストのコードは次のとおりです。
IBar::~IBar() が実際に呼び出されていることをデバッガーで確認しました。しかし、まだこのエラーメッセージが表示されます。Foo::a() 内の IBar::b() への呼び出しのコメントを外すと、テストの失敗がないため、catch ステートメントは呼び出されません。IBar::~IBar() が呼び出されますが、モック オブジェクトが削除されていないことを示すエラー メッセージは表示されません。
どうもありがとうございました。
c++ - Googleモック:モックでメソッドが呼び出されないことをどのように「期待」できますか
Google モックを使用して、何らかの失敗があった場合にモック オブジェクトでメソッドが呼び出されないことをテストしたいと思います。コードは次のようになります。
c++ - 同じクラスの他のメソッド呼び出し内からのgooglemockモックメソッド呼び出しはできますか?
同じクラスの他のメソッド呼び出し内からメソッド呼び出しをモックすることは可能ですか?私はC++(主にC開発者)に不慣れで、googlemockとGoogle Testに非常に慣れていないので、これが他の場所で答えられ、答えがわからなかった場合は許してください!以下は、私がやりたいことを説明する簡単な例です。ReturnInput
以下の例を使用して、テスト中にモックを作成しますReturnInputPlus1
。
上記のテストを実行すると、すべてのテストが成功することが期待されます。代わりに、次の出力が得られます。
c++ - Google Mock 単体テスト静的メソッド c++
単体テストに取り組み始めたばかりです(テストにはBOOSTフレームワークを使用しますが、モックにはGoogle Mockを使用する必要があります)。この状況があります:
したがって、モック クラス A を作成し、クラス B が A クラスの実際の Method1 を使用するのではなく、モックを使用するようにする必要があります。
これを行う方法がわかりません。同様の例が見つかりませんでした。
c++ - Googleモックユニットテスト
単体テストの作業を始めたばかりです(テストにはBOOSTフレームワークを使用していますが、モックの場合はGoogle Mockを使用する必要があります)。このような状況が発生しています。
クラスBのテストを行うことは可能ですか?そのようにして、実際のメソッドの代わりにモックされたメソッド1を使用しますが、クラスBを変更することはできませんか?私はこれが簡単であることを知っています: