問題タブ [googletest]
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++ - google-test クラスを私のクラスと友達にする方法は?
google-test TestCase クラスのフレンドをクラスに有効にする可能性があると聞きました。これにより、テストがプライベート/保護されたメンバーにアクセスできるようになります。
それを達成する方法は?
c++ - C++モック/テストboost::asio::io_streamベースの非同期ハンドラー
私は最近、何年にもわたるC#の後でC /C++に戻りました。それらの年の間に、私はモックとユニットテストの価値を見つけました。
C#でモックとユニットのテスト用のリソースを見つけるのは簡単です。WRTモッキング、C++ではそれほど多くありません。
Asynchio_serviceハンドラーをブーストでモックしてテストするために他の人が何をするかについてのガイダンスが欲しいです。
たとえば、C#では、MemoryStreamを使用してIO.Streamをモックし、これがここでたどるパスであると想定しています。
- C++モック/テストのベストプラクティス
- boost :: asio::io_serviceモック/テストのベストプラクティス
- C++非同期ハンドラーのモック/テストのベストプラクティス
私はgooglemockとgoogletestでプロセスを開始しました。
c++ - GoogleTest: テストから環境にアクセスする
私は C++ (Google の単体テスト フレームワーク) の gtest を試しています。また、ほとんどのテストに必要な (そして不要な) ものを初期化して追跡する ::testing::Environment サブクラスを作成しました。複数回設定する必要があります)。
私の質問は、環境オブジェクトの内容に実際にアクセスするにはどうすればよいですか? 理論的には、テスト プロジェクトのグローバル変数に環境を保存できると思いますが、より良い方法はありますか?
私はいくつかの既存の (非常に複雑な) ものをテストしようとしているので、セットアップはかなり重いです。
c++ - googletest 単体テストを呼び出すための Makefile.am の作成
最初の単体テストを既存のオープン ソース プロジェクトに追加しようとしています。具体的には、audio_manager という名前の新しいクラスを追加しました。
実装ファイルの構造を反映した src/test ディレクトリ構造を作成し、googletest単体テストを作成しました。
今、単体テストをコンパイルして実行するように Makefile.am をセットアップしようとしています。
以下から Makefile.am をコピーしました。
誰かが私にとって簡単なレシピを持っていますか、それとも不可解なautomakeのドキュメントですか? :)
visual-studio-2008 - 同じソリューションで異なるプロジェクトをクロスリンクする場合のVisualStudio2008でのC++リンクの問題
GoogleTestFrameworkを使用していくつかの単体テストを設定しています。私のソリューションには3つのプロジェクトがあります。
- FN(私のプロジェクト)
- FN_test(私のテスト)
- gtest(Google Test Framework)
FN_testを参照(依存関係)としてFNとgtestを設定し、テストを設定する準備ができたと思います(すでに全員を/ MTdに設定しています(これを行わないと、以前はリンクエラーが発生していました)) 。
特に、FN_testを使用してテストしたいFNでEmbarkというクラスを定義します。ここまでは順調ですね。したがって、googletestを使用してEmbarkTestというクラスを記述し、メンバーEmbark *を宣言して、コンストラクター内に記述します。
次に、F7を押すと、次のようになります。
1>FN_test.obj : error LNK2019: unresolved external symbol "public: __thiscall Embark::Embark(int,int)" (??0Embark@@QAE@HH@Z) referenced in function "protected: __thiscall EmbarkTest::EmbarkTest(void)" (??0EmbarkTest@@IAE@XZ)
1>D:\Users\lg\Product\code\FN\Debug\FN_test.exe : fatal error LNK1120: 1 unresolved externals
誰かが私が間違ったことをしたこと、および/またはこれを解決するために何ができるかを知っていますか?
編集:Embark.hからの関連コード
c++ - GoogleTest で ASSERT と EXPECT を使用する
ASSERT_* マクロはテスト ケースを終了させますが、EXPECT_* マクロは評価を続行します。どちらを使用するかを決定する基準は何かを知りたいです。
c++ - CppunitテストをGoogleTestに移行する方法は?
私はCPPunitで書かれたモジュールテストをたくさん持っており、いくつかのモックは手作業で作成されています。できるだけスムーズにGoogleTestに移行する方法を探しています。そのような操作を試しましたか?必要な努力は何でしたか?
unit-testing - qFatal() がアプリケーションを中止しないようにするにはどうすればよいですか?
私の Qt アプリケーションは、(デフォルトで) アプリケーションを中止する qFatal() を呼び出す Q_ASSERT_X を使用します。これはアプリケーションにとっては素晴らしいことですが、アプリケーションの単体テスト時にはその動作を抑制したいと考えています。(私はGoogle Test Frameworkを使用しています。)別のプロジェクトで単体テストを行い、テストしているクラスに静的にリンクしています。qFatal()のドキュメントには次のように書かれています。
致命的なメッセージ msg でメッセージ ハンドラーを呼び出します。メッセージ ハンドラがインストールされていない場合、メッセージは stderr に出力されます。Windows では、メッセージはデバッガーに送信されます。
デフォルトのメッセージ ハンドラーを使用している場合、この関数は Unix システムで中止され、コア ダンプが作成されます。Windows では、デバッグ ビルドの場合、この関数は _CRT_ERROR を報告し、デバッガーをアプリケーションに接続できるようにします。
...
実行時に出力を抑制するには、qInstallMsgHandler() を使用して独自のメッセージ ハンドラーをインストールします。
だからここに私のmain.cppファイルがあります:
しかし、私のアプリケーションはまだアサートで停止しています。テストを実行したときの出力は次のとおりであるため、カスタム ハンドラーが呼び出されていることがわかります。
My Fatal: MyClass::doSomething での ASSERT 失敗: "doSomething()"、ファイル myclass.cpp、21 行目 プログラムが予期せず終了しました。
アサートが失敗した場合でもテストを実行し続けるにはどうすればよいですか?
qt - WindowsでQtのGoogleTestを使用する
簡単なテストファイルTestMe.cppがあります。
GoogleTestを静的ライブラリとして構築しています。(関連する場合は、makefileを提供できます。)
TestMe.cppをコマンドラインから問題なくコンパイルできます。
期待どおりに動作します。
ただし、これをQtでコンパイルすることはできません。同じディレクトリにある私のQtプロジェクトファイル:
これにより、gtest関数に関連する17個の「未解決の外部シンボル」エラーが発生します。
簡単なことだと思うので、ここで髪を引っ張っています。何か案は?
未定義の外部シンボルの一部を次に示します。
visual-studio-2010 - Visual Studio 2010 の GoogleMock と GoogleTest
Visual Studio 2010 で gmock と gtest のビルドに成功した人はいますか? バージョン 1.5.0 で試してみましたが、意味不明なコンパイル エラーしか出ません。