0

管理されていない mfc アプリケーションがあります。gmock を使用して、そのための単体テストを統合したいと思います。すべてのインクルード、ライブラリを追加しました。

しかし、どうすればテストの実行を開始できますか?

他のケースでは、main メソッドを使用してテストを実行していることを知っています。

#include "gmock/gmock.h"

int main(int argc, char** argv) {
    testing::InitGoogleMock(&argc, argv);
    return RUN_ALL_TESTS();
}

ただし、mfc アプリケーションには main メソッドがなく、InitInstance メソッドがあるためです。テストの実行を開始するにはどうすればよいですか?

4

1 に答える 1

2

テスト用に別のプロジェクト (テストプロジェクト)を作成することをお勧めしますint main。彼らのよくある質問ページは、ガイダンスとして次のリソースを参照しています。

http://hassanjamilahmad.blogspot.com/2009/07/gtest-starters-help.html

(考えてみれば、これは理にかなっています。単体テストを最終製品にデプロイする必要がある本当の理由はありません。単体テストは開発者が使用するためのものであり、顧客が使用するためのものではありません。)

簡単に言えば、一般的な設定は次のとおりです。

  • 空の C++ プロジェクトを作成し、.exe をビルドするように構成します
  • このプロジェクトでを定義し、int main言及した googletest ボイラープレート コードを追加します。
  • テスト プロジェクトがプライマリ プロジェクトの出力に依存することを指定します (リンカー プロパティで)。
  • 独自の出力を呼び出すビルド後のイベントをこのプロジェクトに追加して、テストを自動的に実行します。

過去の経験に基づいて、注意すべき点がいくつかあります。

  • このセットアップでは、テスト プロジェクトで使用するために、MFC プロジェクトのクラス/関数をエクスポートする必要があります (そうしないと、それらにアクセスする方法がありません)。

  • MFC プロジェクトをテスト プロジェクトにリンクする (つまり、リンカーを介して) いくつかの問題に遭遇しました。最終的に、MFC プロジェクトから別のライブラリにコードを抽出し、googletest を使用してそれらのライブラリをテストしました。(これらは構成がはるかに簡単で、おまけとしてコードの編成に役立ちました。)

編集時:明確にするために、これらの詳細は googletest に対応しますが、gmock は内部で googletest を使用するため、gmock にも適用されます。

于 2014-03-27T07:00:11.290 に答える