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

电子商务网站开发文档微信网页注册入口

电子商务网站开发文档,微信网页注册入口,网站建设 gei l f,php网站开发工程师找工作引言 程序开发的时候#xff0c;往往需要编写一些测试样例来完成功能测试#xff0c;以保证自己的代码在功能上符合预期#xff0c;能考虑到一些异常边界问题等等。 gtest快速入门 1.引入gtest # 使用的是1.10版本#xff0c;其他版本可根据需要选择 git clone -b v1.1…引言 程序开发的时候往往需要编写一些测试样例来完成功能测试以保证自己的代码在功能上符合预期能考虑到一些异常边界问题等等。 gtest快速入门 1.引入gtest # 使用的是1.10版本其他版本可根据需要选择 git clone -b v1.10.x https://github.com/google/googletest.git cd googletest mkdir build cd build cmake .. make -j4 sudo make install sudo ldconfig2.编写第一个单测 2.1 待测试文件 #ifndef __HELLO_H__ #define __HELLO_H__#include iostream #include stringclass Animal { public:Animal(std::string name) : _name(name){}virtual ~Animal() {}virtual bool eat(const std::string food) 0;private:std::string _name; };class Tigger : public Animal { public:Tigger() : Animal(tigger){}bool eat(const std::string food) override{if (food meat) {return true;}return false;} };class Horse : public Animal { public:Horse() : Animal(Horse){}bool eat(const std::string food) override{if (food grass) {return true;}return false;} }; #endif2.2 单测文件 #include hello.h #include gtest/gtest.husing namespace ::testing;namespace { TEST(TestTigger, CaseEat) {Animal *tigger new Tigger();bool ret tigger-eat(meat);EXPECT_TRUE(ret);ret tigger-eat(grass);EXPECT_FALSE(ret);delete tigger; }TEST(TestHorse, CaseEat) {Animal *horse new Horse();bool ret horse-eat(grass);EXPECT_TRUE(ret);ret horse-eat(meat);EXPECT_FALSE(ret);delete horse; } }2.3 makefile文件 CXX g CXXFLAGS -Wall LIBES -lgtest -lgtest_main -lpthread LPATH -L/tools/googletest/1.11.0/build/lib # 替换成自己lib路径 HPATH -I/tools/googletest/1.11.0/googletest/include/ # 替换成自己的include路径UTEST_OBJD hello_unit_testhello_unit_test:hello_unit_test.cpp${CXX} -o $ $ -I ../ ${HPATH} ${CXXFLAGS} ${LIBES} ${LPATH}clean:rm -rf *_unit_testmake ./hello_unit_test 编译并执行单测程序执行结果如下 gtest常用宏 1. 各种断言 1.1 Bool断言 致命断言非致命断言含义ASSERT_TRUE(val)EXPECT_TRUE(val)val trueASSERT_FALSE(val)EXPECT_FALSE(val)val false 1.2 二元值断言比较大小 致命断言非致命断言含义ASSERT_EQ(a, b)EXPECT_EQ(a, b)a bASSERT_NE(a, b)EXPECT_NE(a, b)a ! bASSERT_LT(a, b)EXPECT_LT(a, b)a bASSERT_LE(a, b)EXPECT_LE(a, b)a bASSERT_GT(a, b)EXPECT_GT(a, b)a bASSERT_GE(a, b)EXPECT_GE(a, b)a b 1.3 字符串断言字符串比较 致命断言非致命断言含义ASSERT_STREQ(a, b)EXPECT_STREQ(a, b)a bASSERT_STRNE(a, b)EXPECT_STRNE(a, b)a ! bASSERT_STRCASEEQ(a, b)EXPECT_STRCASEEQ(a, b)a b 忽略大小写ASSERT_STRCASENE(a, b)EXPECT_STRCASENE(a, b)a ! b 忽略大小写 2. TEST、TEST_F和TEST_P 2.1 TEST TEST是最基本的构造测试case的宏基本用法 TEST(param1, prama2) { /*测试代码*/ }参数1用例名一般由待测试的类名或函数名组成如TestAnimal参数2测试名代表测试含义如CaseEat测试结果将以用例名.测试名来区分不同测试case 2.2 TEST_F TEST_F和TEST的不同之处在于其可以使用到初始化函数SetUp和一个清理函数(TearDown)。基本用法如下 class TestAnimal : public ::testing::Test { protected:void SetUp() override{// 成员变量初始化tigger new Tigger();}void TearDown() override{// 资源清理、释放delete tigger;tigger NULL;} protected:Animal *tigger; };TEST_F(TestAnimal, caseEatMeat) { // 执行之前调用SetUp进行初始化EXPECT_TRUE(tigger-eat(meat));// case退出时调用TearDown进行释放 }TEST_F(TestAnimal, caseEatGrass) {// 执行之前调用SetUp进行初始化EXPECT_FALSE(tigger-eat(grass));// case退出时调用TearDown进行释放 }创建一个继承testing::Test的测试类TestAnimal并在该类中声明成员变量做好初始化和清理操作TEST_F宏 参数1同测试类名TestAnimal 参数2测试名代表测试含义 每一个测试case都是相互独立的当每个case需要共同使用某个变量时可以将该变量放在测试类中每执行一个TEST_F宏构造的case都会调用一次SetUp和TearDown因此case之间对变量的操作不会相互影响。 2.3 TEST_P 针对某个待测试的方法当你需要测试不同的输入但又不想每个case都写一遍时就可以使用到TEST_P宏基本使用如下 // 多个参数时使用结构体更方便 struct MyParams {std::string food;// other params }; class TestAnimal : public ::testing::Test, public ::testing::WithParamInterfaceMyParams { protected:void SetUp() override{// 成员变量初始化tigger new Tigger();}void TearDown() override{// 资源清理、释放delete tigger;tigger NULL;} protected:Animal *tigger; };TEST_P(TestAnimal, caseEat) {std::string food GetParam().food; // 获取参数ASSERT_FALSE(tigger-eat(food)); }// 构造不同的测试样例 INSTANTIATE_TEST_SUITE_P(TestCaseEatParams, TestAnimal, ::testing::Values(MyParams{grass},MyParams{leafs} ));和TEST_F有相似的功能使用SetUp、TearDown进行初始化和清理创建一个继承testing::Test、testing::WithParamInterface的测试类其中WithParamInterface是一个模板类用来关联测试参数。TEST_P宏 参数1测试类名参数2测试名代表测试含义 INSTANTIATE_TEST_SUITE_P宏 参数1能表明测试含义即可参数2测试类名参数3不同测试样例集合 执行结果如下 总结 好记性不如烂笔头最近在写单元测试于是就有了这篇文章。通过学习gtest的基本语法已经可以应对一部分测试场景了然而还有一些场景只通过gtest是无法完成的比如在我们的代码中有许多并不是我们自己设计的接口可能是外部依赖也可能来自于其他模块我们没办法设计一个合适的case来让这些接口返回给我们一个预期值那我们该怎么办呢于是gmock由此诞生这个在下一篇中会进行深入学习篇名我已经想好了玩转单元测试之GMock。
http://wiki.neutronadmin.com/news/77240/

相关文章:

  • 网站地图如何做门户类网站建设需要多少钱
  • 开一个二手车销售网站怎么做普陀网站制作有哪些
  • 桂林市建设工程质量监督站网站设计一个logo需要多少钱
  • 开发东莞网站制作公司广州网站建设是什么意思
  • 网站开发预算做网站空间会招攻击
  • 北京企业建设网站制作林业厅网站建设方案
  • 中山市 做网站嵌入式软件能干一辈子
  • 深圳大型网站建设服务公司重庆汉沙科技做网站怎么样
  • 怎么做网页动图嘉兴百度seo
  • 网站建设需求文章浙江建设职业技术学院招生网站
  • 充值网站 模板无锡网页制作报价
  • 惠州惠城网站建设泊头做网站找哪家好
  • 做PPT不错的网站有哪些wordpress 崩溃
  • 网站服务器异常是什么意思wordpress建站好么
  • 东莞技术支持 骏域网站建设如何给网站做轮播图
  • 顺德营销型网站建设安徽省住房和城乡建设厅门户网站
  • 网站做优化有什么好处短视频平台开发
  • 网站被封怎么wordpress首页仅显示标题
  • 关键词和网站的关系做一个网站多少钱
  • 网站可以做外部链接吗关于网站开发的论文
  • 建设一个网站需要哪些方面的开支html个人网页完整代码展示
  • 电力建设官方网站搜索引擎营销的优势
  • 学做网站前景阿里巴巴运营岗位职责
  • 微信做单页的网站企业营销型网站类型
  • 哪个网站有建设需要等文件品品牌牌建建设设网站
  • 做旅游网站公司教学管理信息服务平台
  • 做游戏网站的市场网站源码本地演示
  • 讲述做网站的电影成都网络优化网站
  • 重庆网站维护制作263企业网盘
  • 用vs2010做网站并连数据库给公司做网站的费用入什么科目