問題タブ [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++ - 単体テストなどを含む複数のモジュールを含むプロジェクトの cmake をセットアップする方法
わかりました、それは私を夢中にさせているので、皆さんに助けを求めるつもりです。現時点ではかなり小さい新しいプロジェクトを立ち上げようとしています。
簡単にするために、私のプロジェクト構造は次のようなものです:
RootProject
- module1 (これはヘッダーのみのライブラリです)
-- include
---module1
----header files (テストしたいテンプレートを含む)
--test
---testmain.cpp (gmock とブースト ユニット テスト フレームワークを使用)
-CMakeLists.txt (1)
-module2 (別のライブラリ、module1 を使用)
--モジュール 1 と同じ構造
CMakeLists.txt (2)
したがって、ルート CMakeLists.txt と、モジュールごとにいくつかの CMakeLists.txt があります。
ルート CMakeLists.txt:
`
しかし、module1 の CMakeLists.txt が機能していると、頭痛の種になります。ヘッダーのみのモジュールをテストする最も簡単なソリューションはどれですか? 助けていただければ幸いです。
c++ - std::vector の検証GMock を使用するオブジェクトのメンバー
GTest/Gmock は初めてです。以下はクラスです:
以下のように GTest/Gmock を使用してこのオブジェクトのメンバーを検証するために以下の EXPECT_CALL 関数を使用しようとすると、エラーが発生しますerror C2228: left of '.at' must have class/struct/union
入力/提案は非常に役に立ちます。ありがとうございます。
unit-testing - ネストされたクロージャーを使用してGroovyでユニットテスト(モッククラス)を行う方法は?
ここからコードを変更して、私が持っているコードと非常によく似ており、単体テストを作成しようとしています。これをテストするための「最善の方法は何か」をお聞きしたいのですが、まともな単体テストを作成する方法に非常に満足しています! Spock、GroovyTestCase、および GMock を調べましたが、それぞれがそのようなテストを作成できる可能性がありますが、そのような例のドキュメントがすべての場合に欠けていることがわかりました。
私がしたい/する必要があるのは、テストできるような方法で「http」をモックすることです:
私はおそらくこれに完全に間違ったアプローチをしており、そのようなコードの単体テストを行う「正しい方法」を受け入れます。これは私にとって新しいことなので、ご容赦ください!
c++ - GMock: モック クラスの基底クラスは常に純粋仮想でなければなりませんか?
Googlecode のグッド プラクティスについて読みました。そして、彼らは正しいですが、私はまだ次のことに興味があります:
いくつかのクラス定義があります。
ご覧のとおり、method_aは純粋な viual ではありません。
コーディングできますか
暗い結果はありませんか?
さらにもっと。MockAでmethod_aをオーバーライドできますか?
お気に入り:
eclipse - Eclipse CDT gtest セットアップ エラー: -lgtest が見つかりません
この投稿をフォローします
Eclipse cdt 8.2.1 で gtest 1.7 をセットアップするには、次のエラーが発生しました。
ところで、gtest 1.5 から 1.7 へのいくつかの変更があります。実際に次のようなリンクを作成します。
ご覧のとおり、libgtest は gtest1.7/lib ではなく、gtest1.7/lib/.lib (2 番目の隠しディレクトリ) の下にあります。それで、私は何を間違えましたか?
c++ - GTest と GMock を使用したテスト: 共有ライブラリと静的ライブラリ
この質問は、サイトの Q&A 基準の一部に違反している可能性があると思います。私が受け取る回答は意見に基づくものと見なされる可能性があるためです。とはいえ、このまま…。
CMake を使用してビルド/テスト/パッケージ化プロセスを駆動し、GTest と GMock をテスト用に使用して、C++ プロジェクトに取り組んでいるとします。さらに、プロジェクトの構造が次のようになっているとします。
もちろん、これは単純化しすぎた状況ですが、その考えは理解できます。
これらのモジュールがライブラリであり、すべてのテスト (つまり、 の下のすべてのディレクトリtests
) が実行可能である場合、後者を前者とリンクする必要があります。問題は、これらのライブラリが共有されている場合、ローダーはもちろんそれらを見つける必要があるということです。明らかな解決策は、CMake の を使用して、テストの作業ディレクトリをライブラリのディレクトリに設定することset_property
です。ただし、GTest と GMock の両方が共有ライブラリとしてビルドされている場合、それらもロードする必要があるため、これは機能しません。
私が思いついた解決策は次のとおりです。
- 両方のライブラリ (つまり、GTest と GMock) をモジュールのビルド ディレクトリにコピーします。共有ライブラリの主な利点 (つまり、プログラム間でコードを共有すること) が完全にバイパスされ、ビルド ディレクトリ全体にこれらのコピーが複数存在することになるため、これはちょっとばかげているように感じます。
- 代わりに、GTest と GMock の両方を静的ライブラリとしてビルドします。これは、両方のライブラリのコピーがすべての実行可能ファイルに含まれることになり、サイズが大きくなることを意味します。1000回のテストはありませんが、これはなんとなくぎこちなく感じます。
ですから、この状況を考えると、誰かがこれに襲われたことがあるかどうか、そして彼/彼女がどのような道をたどったかを知りたいです. make && make test
(解決策が私が言及したものと異なる場合は、喜んですべてを聞いてください。)理想的には、何も実行することなく、すべてのテストを実行できる立場になりたいです。物事に対応するための追加のスクリプト。すべてのライブラリを静的ライブラリとして構築することでうまくいきますが、代わりに共有ライブラリとして構築するとどうなるでしょうか? それらを 2 回ビルドする必要がありますか? それはばかげている。
もう 1 つの問題も同様ですが、その解決には再設計または同様のアーティファクトが必要だと思います。module_foo
たとえば、サードパーティのライブラリに依存しているとしましょうlibrary_baz
。module_foo
に直接リンクしている場合、関係のない機能をテストしている可能性があるとしてもlibrary_baz
、前者のテストは をロードする必要があります。library_baz
同じ問題が発生します。
ここでモッキングを行うのは正しいことのように思えますが、インターフェイスと対話するためにリファクタリングするのはあまり意味がないと感じていmodule_foo
ます (動的ポリモーフィズムまたは静的ポリモーフィズムのいずれかによって)。そのような柔軟性:library_baz
仕事をします。「確かに、今日は柔軟性は必要ありませんが、明日は誰にもわかりません」と言う人もいると思います。システムが遭遇する可能性のあるすべてのシナリオをプレビューしようとすると、直感に反するように思えますが、繰り返しになりますが、私よりもはるかに経験豊富な人がいます。
何かご意見は?