Xcode下使用gtest和gmock

Xcode下使用gtest

编译gest

  • 下载gest代码
  • 进到目录:googletest-master/googletest/xcode,打开工程:gtest.xcodeproj,
  1. 修改C++ Standard Library为C++11,否则将gtest集成到C++11的工程时,会有编译错误,
  2. 修改OS X Deployment Target为10.7及以上(C++11要求)
  3. 修改Architectures为通用,
    修改后按Command+B编译代码,如图:


    配置Architectures

    配置OS X Deployment Target

    配置C++ Standard Library
  • 通过以下方式找到生成的库文件,拷贝到需要的地方。


    查找库文件

配置gest库环境

  • 将gtest的头文件和生成的库文件分别拷贝到工程的include和lib目录下


    gtest库相关文件
  • 在search paths->Library Search Paths中增加gtest库目录


    配置gtest库的路径
  • 在Other Linker Flags中链接gtest库


    链接gtest库

Xcode下使用mock

编译mock

  • 进到目录:cd googletest-master/googlemock/make
  • 编译:make,编译完只有库:gmock_main.a,该库中包含了gmock的框架,同时,也包含了gtest框架,可以认为gtest是gmock的一个子集。在gmock_main.a中默认编译了一个main函数,该main函数会初始化gmock和gtest,并且执行所有的TEST或TEST_F宏定义的测试用例,所以使用gmock_main.a进行单元测试时,不能编写main函数,否则会出现多个main冲突。
  • 生成非main库:make gmock.a,生成不带main函数的库,此时就可以编写自己的main函数
  • 运行单元测试:./gmock_test
编译gmock

配置gmock环境

同gtest

编写gtest和gmock测试用例

class Messenger {
public:
  virtual ~Messenger() {}
  virtual std::string getMessage() = 0;
};

class MockMessenger : public Messenger {
public:
  MOCK_METHOD0(getMessage, std::string());
};

class HelloWorld {

public:
  std::string getMessage(Messenger *messenger) {
    return messenger->getMessage();
  }
};

TEST(ss, getMessage) {
  MockMessenger messenger;
  std::string msg = "Hello World";
  EXPECT_CALL(messenger, getMessage())
      .WillRepeatedly(testing::Return(testing::ByRef(msg)));
    HelloWorld helloWorld;
    EXPECT_EQ(msg, helloWorld.getMessage(&messenger));
    EXPECT_EQ("Hello World1", helloWorld.getMessage(&messenger));
}

相关资料:
gmock官方网站
gmock的正则表达式
gmock官方wiki
gtest官方网站

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过...
    小5筒阅读 10,914评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,188评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,088评论 19 139
  • 我这人好像有一种怪癖,喜欢各种好看的外表! 各种漂亮的本子,漂亮的笔,还有就是各种封面漂亮的书!从小就喜欢买漂亮本...
    G_Change_阅读 1,621评论 0 1
  • X:“你还没说你喜不喜欢我呢?” Y:“不喜欢你 当然也不讨厌,因为我没有资格讨厌你 。我知道你对我很好,所以我很...
    预见的未来阅读 4,529评论 0 0

友情链接更多精彩内容