Windows Qt中使用Google mock

  1. 在Qt中设置预编译器
    如果不设置预编译器会报错
    main.obj? error: LNK2019: 无法解析的外部符号 “class testing::internal::Mutex testing::internal::g_gmock_mutex” (?g_gmock_mutex@internal@testing@@3VMutex@12@A),该符号在函数 “public: virtual __cdecl testing::internal::FunctionMocker<class std::basic_string<char,struct std::char_traits,class std::allocator > __cdecl(void)>::~FunctionMocker<class std::basic_string<char,struct std::char_traits,class std::allocator > __cdecl(void)>(void)” (??1? F u n c t i o n M o c k e r @ FunctionMocker@ FunctionMocker@ A 6 A ? A V ? A6A?AV? A6A?AV?basic_string@DU? c h a r t r a i t s @ D @ s t d @ @ V ? char_traits@D@std@@V? chartraits@D@std@@V?allocator@D@2@@std@@XZ@internal@testing@@UEAA@XZ) 中被引用
    根据论坛描述找到解决方案
    DEFINES +=GTEST_LINKED_AS_SHARED_LIBRARY

  2. 测试代码

class FooInterface {
 public:
     virtual ~FooInterface() {}
     virtual std::string getArbitraryString() = 0;

     virtual int getPosition() = 0;
 };



class MockFoo : public FooInterface {
 public:
     MOCK_METHOD0(getArbitraryString, std::string());
     MOCK_METHOD0(getPosition, int());
 };
int main(int argc, char *argv[])
{

   testing::InitGoogleMock(&argc, argv);
   int n = 100;
   string value = "Hello World!";
   MockFoo mockFoo;
   EXPECT_CALL(mockFoo, getArbitraryString())
       .Times(1)
       .WillOnce(Return(value));
   string returnValue = mockFoo.getArbitraryString();
   cout << "Returned Value: " << returnValue << endl;
   EXPECT_CALL(mockFoo, getPosition())
       .Times(2)
       .WillRepeatedly(Return(n++));
   int val = mockFoo.getPosition();  //100
   cout << "Returned Value: " << val << endl;
   return EXIT_SUCCESS;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值