問題タブ [gmock]
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++ - GMock Wrap 関数内で値を設定中にメモリが破損する
GTest/GMock を使用して非仮想関数をモックする必要があるという要件があります。そのため、その関数をラップして、テスト スイートの "tst_def" ファイルにリンクしました。ラップされた関数の場合、整数は参照によって渡され、ラップされた関数内の任意の値をこの整数に設定すると、実行中にテストスイートが「メモリ破損でクラッシュ」します (セグメンテーション違反)。
重要な観察:
このクラッシュは、ラップされた関数内の整数に、作成時に割り当てられたものと同じデフォルト値を設定した場合には発生しませんが、他の値を割り当てた場合にのみクラッシュします。
編集:
このラッパー関数に渡される value1 の初期値が 0 であるとします。
c++ - gmockを使用してpthread_createをモックする
を呼び出すメソッドがありますpthread_create(...)
。の出力をモックして期待することは可能pthread_create
ですか?実際にスレッドを起動しませんか?
クラス全体がモックオブジェクトであり、テストケースの最後にオブジェクトを削除するとすぐにスレッドセグメントになるため、これを求めています。
unit-testing - whileループで関数にexpect_callを設定する方法は?
コード内の関数をテストするために、gmock、gtest フレームワークを使用しています。そして、テストされているメイン関数の側で呼び出される関数をモックしました。モック関数は無限 while ループにあり、成功した場合にのみ終了し、失敗した場合は keep がエラー メッセージを出力します。モック関数は次のようになります。
ここで、ソケット関数を失敗させてエラーを出力したいと考えています。私はエラーを印刷することができましたが、それは内部ループであるため、エラーメッセージを印刷し続けます。gtest が 1 回か 2 回で印刷を停止するように期待するにはどうすればよいですか。こんな期待を込めて
私は .Times(2) を入れてみましたが、うまくいきませんでした。
c++ - EXPECT_CALL で Google モックの EXPECT_THAT を使用しますか?
私はグーグルモックを使用しています。ドキュメントには、EXPECT_CALL または ON_CALL で EXPECT_THAT を使用できると書かれていますが、次のようなコードはコンパイルできないようです。
EXPECT_THAT はマクロであることを知っているので、そこに表示されるべきではないいくつかのステートメントに展開されます。では、「EXPECT_CALL で EXPECT_THAT を使用する」とはどういう意味ですか? どうやってするの?
ありがとう
unit-testing - GMock (0.8.0) でモック サービスを使用して Grails コントローラーをテストする
サービスのメソッドを呼び出し、リクエストとレスポンスを渡すコントローラーを持つ grails 2.1 アプリがあります。
このメソッドの単体テストを行いたいです。そして、GMock (バージョン 0.8.0) を使用してこれを行いたいので、これを試しました。
これは、リクエストに対する期待に失敗したと言って失敗します。
ただし、次のようにテストを記述した場合:
テストは問題なくパスします。私の知る限り、どちらも GMock 構文の有効な使用法ですが、なぜ最初のものは失敗し、2 つ目は失敗するのでしょうか?
乾杯、
unit-testing - 一般的なモック関数を gmock/gtest にラップする
私の gtest フレームワークでは、いくつかの関数をモックし、いくつかのテストケースを作成しました。そして、多くのテストケースで、同じモック関数を EXPECT_CALL で何度も使用したことがわかります。そこで、これらの共通モック EXPECT_CALL を 1 か所に配置して呼び出すだけで、行数が減り、テストケースがよりシンプルに見えるかどうか疑問に思っています。
それらを1つの関数に入れて関数を呼び出そうとしましたが、多くのコンパイルの問題が発生しました。誰でも何か考えがありますか?
c++ - テストケースの登録を解除する方法と、特定のテスト ケースを Gtest に登録する方法
私たちが知っているように、gtets では、コントロールが見つかっTEST
たりTEST_F
機能したりするとregisters
、. しかし、私の要件によれば、gtest がすべてのテストケースを登録した後、リストにあるかどうかを検索する必要がありますか? が存在する場合は、すべてのテスト ケースを登録解除し、見つかった のみを登録する必要があります。どうやってするか???仮定するtest cases
gtest
testcasename
tesetcasename
testcasename
で を検索し"testcasename3"
ているとしregistered testcasename
ます。そしてそれは利用可能です。ここで、すべてではなく、見つかったテストケースのみを gtest に実行させたい...
どうやってするか?
どんな答えでも大歓迎です
gmock - gmockマッチャーが参照により私の引数と一致しません
私は次のようなクラスにモック関数を持っています
のように嘲笑されています
私が設定したいくつかのデフォルトのアクションを設定します
テスト中の私のコードは呼び出します
しかし、1を返す代わりに、gmockは次のエラーを表示します。
はoperator ==
オブジェクトに対して定義されていますbar
。gmockがデフォルトのアクションを見つけられないのはなぜですか?
deadlock - モックがデフォルト値としてモックを返すと、フィクスチャの分解中に gtest がハングする
理解も解決もできない奇妙な動作を見つけました。タイプのいくつかの実際のオブジェクトを提供するファクトリー FooFactory がありますFoo
。Foo
私がモックしたオブジェクトのメソッド呼び出しをテストするには、呼び出しが期待できるオブジェクトを返すFooFactory
ようにします。MockFooFactory
MockFoo
テスト (含まれていません) は正常に動作していますが、テスト後、MockFooFactory の分解中に gmock/gtest がハングします (ミューテックスの問題のようです)。正確には、デフォルトの ON_CALL を削除すると、Mutex の作成時に問題が発生します。
スマート ポインターに問題があるはずです。スマート ポインターを使用せずにバージョンをビルドすると、正常に動作します。しかし、私がテストしたソフトウェアは shared_ptr をスマート ポインターとして使用しているため、それらを取り除くことはできません。
エラーを再現するサンプルを次に示します。
誰かが同じ問題を経験したことがありますか、それとも解決策を持っていますか?
c++ - gmockを使用した11個のパラメーターを使用したモックメソッド
gmockを使用して、レガシーコードの依存関係をモックしています。クラスの1つには、11個のパラメーターを持つメソッドがあります。MOCK_METHOD11_WITH_CALLTYPEを使用してモックを作成しようとすると、このマクロが存在しないことがわかりました。gmockは、最大10個のパラメーターのみをサポートします。これについて何を提案しますか?このメソッドをダミーボディで実装しますか?または、マクロをコピーして拡張しますか?ありがとう!
PS、私は現在私のテストでこのメソッドをモックする必要はありませんが、おそらく将来的にそうする必要があります。
よろしくお願いします、