美文网首页
Xcode下使用gtest和gmock

Xcode下使用gtest和gmock

作者: 龙翱天际 | 来源:发表于2017-03-01 00:32 被阅读1100次

    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官方网站

    相关文章

      网友评论

          本文标题:Xcode下使用gtest和gmock

          本文链接:https://www.haomeiwen.com/subject/oiitwttx.html