当前位置: 首页 > news >正文

烟台酒店网站建设怎么在wordpress添加幻灯片

烟台酒店网站建设,怎么在wordpress添加幻灯片,土木工程毕设代做网站,中商华兴建设有限公司网站引言 前文我们学习了gtest相关的使用,单靠gtest,有些场景仍然无法进行测试,因此就诞生了gmock。 gmock快速入门 在引入gtest时,gmock也同样引入了,因此只需要在编译时加上合适的编译选项即可,注意不同版…

引言

前文我们学习了gtest相关的使用,单靠gtest,有些场景仍然无法进行测试,因此就诞生了gmock。

gmock快速入门

在引入gtest时,gmock也同样引入了,因此只需要在编译时加上合适的编译选项即可,注意不同版本的gtest在使用上可能会有所不同,当前为v1.10版本。

1. 待测试文件

#ifndef __HELLO_H__
#define __HELLO_H__#include <iostream>
#include <string>class Tigger{
public:Tigger(){}virtual ~Tigger() {}virtual bool eat(const std::string& food){if (food == "meat") {return true;}return false;}
};
class FeedTigger {
public:Tigger* _tigger;FeedTigger(Tigger* tigger){_tigger = tigger;}bool feed(const std::string& food){if (_tigger !=NULL && _tigger->eat(food)) {return true;}return false;}
};
#endif

2. 单测文件

#include "hello.h"
#include "gtest/gtest.h"
#include "gmock/gmock.h"using namespace ::testing;namespace {class MockTigger : public Tigger {
public:MOCK_METHOD1(eat, bool(const std::string&));
};
TEST(TestTigger, CaseEat) 
{Tigger tigger;FeedTigger feed_tigger0(&tigger);EXPECT_FALSE(feed_tigger0.feed("grass"));MockTigger mock_tigger;FeedTigger feed_tigger1(&mock_tigger);ON_CALL(mock_tigger, eat(_)).Times(1).WillRepeatedly(::testing::Return(0));EXPECT_TRUE(feed_tigger1.feed("grass"));
}
}

可以看到,第一次在传入"grass"这个参数时,程序必定返回false,而第二次,我们使用了mock之后的结果,也就是说无论传入什么参数,返回的结果都会是true。

3. makefile文件

CXX = g++
CXXFLAGS = -Wall
LIBES = -lgtest -lgmock -lgtest_main -lpthread
LPATH = -L/tools/googletest/1.11.0/build/lib  # 替换成自己lib路径
HPATH = -I/tools/googletest/1.11.0/googletest/include/ # 替换成自己的
include路径
HPATH += -I/tools/googletest/1.11.0/googlemock/include/ # 替换成自己的
include路径UTEST_OBJD = hello_unit_testhello_unit_test:hello_unit_test.cpp${CXX} -o $@ $+ -I ../ ${HPATH} ${CXXFLAGS} ${LIBES} ${LPATH}clean:rm -rf *_unit_test

gmock常用宏

1. MOCK_METHODx

其中x表示参数个数,如:

MOCK_METHOD0(func1, void());
MOCK_METHOD1(func2, int(int));
MOCK_METHOD2(func3, int(int, int));

第一个参数,funcx表示函数名,第二个参数为函数返回值和参数列表。若是mock一个模板类的成员函数,只需要使用MOCK_METHODx_T即可。

2. ON_CALL

ON_CALL(mock, func3(_, 1)).Times(4).WillOnce(Return(0)).WillOnce(Return(1)).WillRepeatedly(Return(2));
  • func3中的参数:
    • ‘_’表示匹配任意参数
    • 1,表示匹配指定参数,即参数为1时,才能匹配,否则不会调用mock方法
  • Times,表示mock方法执行多少次
  • WillOnce,指定一次返回结果
  • WillRepeatedly,指定每次返回同样的结果
  • 上述指定mock结果之后,程序会在第一次调用func2方法时返回0,第二次返回1,第三次和第四次都返回2,第五次及之后返回真实结果。
  • 以上为基本用法,更多好玩的用法请参考官方文档

3. EXPECT_CALL

EXPECT_CALL宏在使用上与ON_CALL宏区别不大,可以参照其进行使用,主要区别在于EXPECT_CALL宏在指定调用次数(Times)后,如指定了调用3次,程序必须调用被mock的函数,使得mock结果生效3次,否则就会报测试失败或异常,而ON_CALL则不会。所以当确实需要mock结果生效指定次数时,那么就选择使用EXPECT_CALL。

总结

  • 本篇主要讲解了如何快速入门gmock以及基本语法。
  • gmock原理其实就是利用了多态的特性,通过继承需要被mock的类,然后重写其虚函数,在使用时,将被mock的对象替换成mock后的对象,这样在运行时就可以调用mock后的对象方法,从而达到测试预期。
  • 因此gmock本身只能mock虚函数,而对于non-virtual函数,如非虚成员函数、静态成员函数、全局函数、外部依赖库的函数等,该如何进行mock呢?我们将在下一篇章来介绍。
http://www.yayakq.cn/news/815397/

相关文章:

  • 知名企业网站搭建品牌wordpress 用户验证码
  • 受欢迎的网站建设教程wordpress主题添加评论框
  • 网站建设行业的分析长春网站排名公司
  • asp.net做网站头部和尾部_都用什么来实现wordpress pdf
  • 现在做个企业网站一般多少钱网页设计案例教程课后实训答案
  • 设计师用的素材网站有哪些做封面图什么网站
  • 企业网站备案流几天网站上做的图片不清晰是怎么回事
  • wordpress的管理员权限代码济南公司网站推广优化最大的
  • 重庆h5建站专业长沙做网站公司
  • 商务局网站建设主题营销活动创意
  • 贸易网站建设公司wordpress手机端底部导航
  • 海南学校网站建设南昌企业网站排名优化
  • 网站建设淘宝店铺模板西数 网站建设
  • 网站建设规模品牌设计公司排名品牌设计公司排名
  • 免费成品网站模板下载英文网站建设的原因
  • 延平网站建设wzjseo国企建筑公司有哪些
  • 做一个介绍网站多少钱深圳市区是哪个区
  • 谷歌绘制的网站怎么键卖东西的网站
  • 网站标题写什么作用是什么天津债务优化公司
  • 公众微信网站建设网上购物网站建设公司
  • 网站建设首页包括什么软件网页制作技术实训报告
  • 网站运营推广方案网站开发报告多少页合适
  • html5 做手机网站长沙注册公司核名网站
  • 灯饰 东莞网站建设海南论坛网站建设
  • 烟台网站建设科技公司wordpress products
  • 房屋 哪个网站做的最好国外域名建站
  • 网页设计欣赏及评析河南网站推广优化报价
  • 国际机票网站建设网站建设初期的工作计划
  • 木材模板.网站网站建设工作室
  • 东莞做网站 南城石佳建设摩托官方网站