8

googlemock をテストに統合しようとしています。私はすでに googletest でテストを正常にビルドして実行しており、現在はテストに gmock 機能を段階的に追加しようとしていますが、完全に理解できないコンパイル エラーが発生しました。

モック化されたクラスを使用または定義したり、gmock.h が提供するものを使用したりしようとしているわけではありません。私の(以前は働いていた)tests.cppファイルの一番上に、私は単に入力します

#include "gmock/gmock.h"

そして、コンパイルエラーが発生します:

gmock/gmock-matchers.h(2497): エラー C2059: 構文エラー: 'sizeof'

gmock/gmock-matchers.h(2505) : コンパイル中のクラス テンプレートのインスタンス化 'testing::internal::ElementsAreMatcherImpl' への参照を参照してください

gmock/gmock-matchers.h(2497): エラー C2059: 構文エラー: ')'

gmock/gmock-matchers.h(2497): エラー C2143: 構文エラー: '{' の前に ')' がありません

gmock/gmock-matchers.h(2497): エラー C4430: 型指定子がありません - int が想定されています。注: C++ は default-int をサポートしていません

gmock/gmock-matchers.h(2499): 警告 C4183: 'メッセージ': 戻り値の型がありません。'int' を返すメンバー関数と見なされます

Windows 7 で nmake/vc++ を使用してこれをコンパイルしていますが、テスト ファイルにコア gmock インクルード ファイルを追加するだけでこれらのコンパイル エラーが発生する理由がわかりません。誰もこの種のものを見たことがありますか?

4

2 に答える 2

4
  1. テスト プロジェクトのメイン関数で、InitGoogleMock(&__argc, __argv) で Google モックを初期化しましたか?
  2. テスト ファイル (および InitGoogleMock を呼び出す場所) には "gmock/gmock.h" のみを含める必要があります。gtest.h を含める必要はありません。
  3. googletest ライブラリを googlemock に更新しましたか。( https://github.com/google/googletest )

上記のすべてのことが当てはまる場合、それは機能するはずです。

于 2016-03-22T14:43:25.827 に答える
0
Even after verifying the above steps(last step need information) still im facing the same error.

g++ MockTest.cpp -lgtest
MockTest.cpp:1:10: fatal error: gmock/gmock.h: No such file or directory
    1 | #include "gmock/gmock.h"
      |          ^~~~~~~~~~~~~~~
compilation terminated.
于 2022-02-17T05:25:33.207 に答える