当我#include“ gmock / gmock.h”时编译错误

wha*_*ter 5 c++ googlemock

我正在尝试将googlemock集成到我的测试中。我已经在googletest上成功构建并运行了测试,现在正尝试将gmock功能逐步添加到测试中,但是遇到了我完全不理解的编译错误。

我不尝试使用或定义模拟类,也不使用gmock.h提供的任何东西。在我(以前工作的)tests.cpp文件的顶部,我只键入

#include "gmock/gmock.h"
Run Code Online (Sandbox Code Playgroud)

我得到了编译错误:

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

  1. 您是否在测试项目的主函数中使用 InitGoogleMock(&__argc, __argv) 初始化了 google 模拟?
  2. 您应该在测试文件(以及调用 InitGoogleMock 的位置)中仅包含“gmock/gmock.h” - 无需包含 gtest.h。
  3. 您是否已将 googletest 库更新为 googlemock。(https://github.com/google/googletest

如果上述所有事情都是正确的,那么它应该可以工作。