测试自动化 2011/06/11 - 1 一个最简单的GMock测试程序HelloGMock

OpenHarmony(鸿蒙南向开发)——标准系统移植指南(二)Linux内核 本文面向希望将OpenHarmony移植到三方芯片平台硬件的开发者,介绍一种借助三方芯片平台自带Linux内核的现有能力,快速移植OpenHarmony到三方芯片平台的方法。 阅读详情

Google Mock使用:做一个最简单的GMock例子并运行起来(耗时约3小时)

 

1. 生产代码:Hello.h, SayHello.h

 

[root@localhost HelloGMock]# cat Hello.h
#ifndef __HELLO_
#define __HELLO_

class Hello {
public:
        virtual void Hi() = 0;
};

#endif

 

[root@localhost HelloGMock]# cat SayHello.h
#include "Hello.h"

class SayHello {
public:
        SayHello(Hello *h) { hello = h; }
        //SetIt(Hello *h) { hello = h; )
        void SayIt() { hello->Hi(); }
private:
        Hello * hello;
};

 

2. 测试代码:SayHelloTest.cpp MockHello.h

 

[root@localhost HelloGMock]# cat MockHello.h

#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include "Hello.h"

class MockHello : public Hello {
public:
        MOCK_METHOD0(Hi, void());
};

 

[root@localhost HelloGMock]# cat SayHelloTest.cpp
#include "gtest/gtest.h"
#include "gmock/gmock.h"
#include "MockHello.h"
#include "SayHello.h"

TEST(SayHelloTest, test) {
        //MockHello * hello = new MockHello;
        MockHello hello;

        EXPECT_CALL(hello, Hi()).Times(2);

        SayHello * sh = new SayHello(&hello);
        sh -> SayIt();

}

3. Makefile

 

# Builds a sample test.
TEST_SRC = $(USER_DIR)/SayHelloTest.cpp $(USER_DIR)/Hello.h $(USER_DIR)/MockHello.h $(USER_DIR)/SayHello.h
SayHelloTest.o : $(TEST_SRC) $(GMOCK_HEADERS)
        $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(TEST_SRC)
HelloGMock : SayHelloTest.o  gmock_main.a
        $(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@

 

 

4. 运行结果

 

[root@localhost HelloGMock]# make
g++ -I../../gtest/include -I../../include -g -Wall -Wextra -c ./SayHelloTest.cpp ./Hello.h ./MockHello.h ./SayHello.h
./Hello.h:4: 警告:‘class Hello’ 有虚函数却没有虚析构函数
./MockHello.h:6: 警告:‘class MockHello’ 有虚函数却没有虚析构函数
./Hello.h:4: 警告:‘class Hello’ 有虚函数却没有虚析构函数
./Hello.h:4: 警告:‘class Hello’ 有虚函数却没有虚析构函数
./MockHello.h:6: 警告:‘class MockHello’ 有虚函数却没有虚析构函数
g++ -I../../gtest/include -I../../include -I../../gtest -I../.. -g -Wall -Wextra /
            -c ../../src/gmock-all.cc
g++ -I../../gtest/include -I../../include -I../../gtest -I../.. -g -Wall -Wextra /
            -c ../../gtest/src/gtest-all.cc
g++ -I../../gtest/include -I../../include -I../../gtest -I../.. -g -Wall -Wextra /
            -c ../../src/gmock_main.cc
ar rv gmock_main.a gmock-all.o gtest-all.o gmock_main.o
r - gmock-all.o
r - gtest-all.o
r - gmock_main.o
g++ -I../../gtest/include -I../../include -g -Wall -Wextra -lpthread SayHelloTest.o gmock_main.a -o HelloGMock
[root@localhost HelloGMock]# ./HelloGMock
Running main() from gmock_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from SayHelloTest
[ RUN      ] SayHelloTest.test
[       OK ] SayHelloTest.test (0 ms)
[----------] 1 test from SayHelloTest (2 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (8 ms total)
[  PASSED  ] 1 test.

 

 

5. 调试过程问题总结

 

* Hello.h:6: 错误:ISO C++ 不允许声明无类型的 ‘virutal’

拼写错误,应该为"virtual"

 

* 误拼"}"为")"

 

[root@localhost HelloGMock]# vi SayHello.cpp
#include "Hello.h"

class SayHello {
public:
        SayHello(Hello *h) { hello = h;)
        void SayIt() { hello->hi(); }
private:
        Hello * hello;
};
~

[root@localhost HelloGMock]# g++ SayHello.cpp Hello.h
SayHello.cpp:9: 错误:expected `}' at end of input
SayHello.cpp: In constructor ‘SayHello::SayHello(Hello*)’:
SayHello.cpp:5: 错误:‘hello’ 在此作用域中尚未声明
SayHello.cpp:5: 错误:expected primary-expression before ‘)’ token
SayHello.cpp:5: 错误:expected `;' before ‘)’ token
SayHello.cpp:7: 错误:expected primary-expression before ‘private’
SayHello.cpp:7: 错误:expected `;' before ‘private’
SayHello.cpp: At global scope:
SayHello.cpp:9: 错误:expected unqualified-id at end of input

 

原因:'}'误拼为')'了。

 

* 错误:‘class Hello’ 重定义

加上

#ifndef __HELLO_
#define __HELLO_

 

 

C++开发测试工具gmock使用详解(进阶Demo).rar C++开发测试工具gmock使用详解(进阶Demo),详情可参考文章:https://blog.youkuaiyun.com/didi_ya/article/details/123275719 立即下载

相关推荐

gmockdemo 单元测试

class GmockdemoTest : public QObject { Q_OBJECT public: GmockdemoTest(); private Q_SLOTS: void testCase1(); }; GmockdemoTest::GmockdemoTest() { } void GmockdemoTest::testCase1() { MockProduct product; EXPECT_CALL(product, id()). Times(4). WillOnce(testing::Return(2)). WillOnce(testing::Return(5)). WillOnce(testing::Return(3)). WillOnce(testing::Return(5)); Order order; int result = order.checkIn(product); QCOMPARE(result,10); result = order.checkIn(product); QCOMPARE(result,15); }

protobuf-master :编译篇

protobuf 的编译、使用

Mr.Sugarcane 1670

gmock库已编译可以运行

windows 下gmock库已编译可以运行,提供了vs2010和2015的工程文件,也可以直接自己编译生成库

C++开发测试工具gmock使用Demo案例

本文介绍一下C++开发测试工具gmock的使用Demo,希望对你有所帮助。 头文件代码: #pragma once #include <string> #include<iostream> using namespace std; class Parent { public: virtual ~Parent() {} //析构函数 virtual int getNum() const = 0; virtual void setResult(int value) = 0;

Wendy的博客 7838

GMock框架CookBook文档解析

这是GMock的CookBook部分的文档翻译

gmock-1.7.0.zip

gmock-1.7.0.zip ,移植myql时需要 gmock-1.7.0.zip

深入理解gtest C/C++单元测试经验谈

深入理解gtest C/C++单元测试经验谈 2011-08-22 13:57 杨玚 51CTO 我要评论(0) 字号:T | T 本文基于笔者的实际开发经验,言简意赅地讲解了C/C++单元测试框架gtest的主要使用方法和注意事项,并设计了若干可编译的精简示例,给出了运行效果图。既可以用作gtest的入门教程,也适合作为工作中的快速参考。 AD:2013大数据全

shuiyingzi5的专栏 1917

强化学习-马尔可夫模型

前文提到了强化学习源自马尔可夫决策过程,本文从马尔可夫概念入手,讲解和马尔可夫有关的模型和概念。在马尔科夫决策过程中,我们有一个智能体,它在一个马尔科夫过程中进行决策,每次决策都会导致状态的转移和获得即时奖励。智能体的目标是通过选择动作来最大化未来奖励的期望值。通常马尔科夫决策过程是个五元组:SAPRγSAPRγS 表示状态集合,代表智能体可能处于的所有状态。A 表示动作集合,代表智能体可以采取的所有动作。

君子之学必日新,日新者日进也。不日新者必日退,未有不进而不退者 8060

编译gmock

编译lib tar -xvf gmock-1.5.0.tar.bz2  cd gmock-1.5.0/ ./configure make sudo make install 编译自带的测试例子 cd make make ./gmock_test Running main() from gmock_main.cc [==========] Running 13 test

zmlovelx(帅得不敢出门 程序员群31843264) 1607

金蝶个版本下载地址,记得保存收藏。

专业版 V10.0 http://downloads.cmcloud.cn/kis/kis_pro/10.0/kiszybV10sp1.rar V11.0 http://downloads.cmcloud.cn/kis/kis_pro/11.0/KISV11Setup.rar V12.0 http://dow...

饺子的博客 2502

数学文化赏析MOOC笔记【2023】

深圳大学UOOC课程《数学文化赏析》课程笔记

simplenthpower的博客 1751

CMU15-445 2021Fall Project0-C++ primer

CMU15-445 2021Fall Project0-C++ primer In this project, you will implement three classes: Matrix, RowMatrix, and RowMatrixOperations. These matrices are simple two-dimensional matrices that must support addition, matrix multiplication, and a simplified Gen

qq_53111905的博客 874

【AI实战】用Coze工作流打造抖音视频文案提取神器——从单链接到批量处理的进阶指南

本文详细介绍了如何利用Coze工作流打造抖音视频文案提取工具,从单链接处理到批量提取的进阶指南。通过AI技术和工作流的结合,用户可以高效提取抖音视频的ASR和OCR文本,大幅提升内容创作效率。文章还涵盖了性能优化、异常处理及实际应用场景扩展,助力开发者快速实现抖音文案自动化提取。

weixin_29210759的博客 278

代码单元测试工具:gmock

Mock,更确切地说应该是Mock Object。当我们在单元测试、模块的接口测试时,当这个模块需要依赖另外一个/几个类,而这时这些类还没有开发好,这时我们就可以定义Mock对象来模拟那些类的行为。 mock工具的其中一个非常重要的作用是指定函数的行为(模拟函数的行为)。可以对入参进行校验,对出参进行设定,还可以指定函数的返回值。 Google's framework for w...

ARM-Linux 1831

如何使用PostgreSQL数据库进行数据仓库的ETL操作

本文旨在为数据工程师、数据库管理员和分析师提供使用PostgreSQL进行数据仓库ETL操作的全面指南。ETL流程的基本原理PostgreSQL在ETL中的独特优势实际ETL实现的技术细节性能优化和最佳实践常见问题的解决方案首先介绍ETL和PostgreSQL的基本概念然后深入探讨核心技术和实现方法接着提供实际案例和代码示例最后讨论优化技巧和未来趋势ETL:提取(Extract)、转换(Transform)、加载(Load)的缩写,描述数据从源系统移动到目标数据仓库的过程。

2502_91592937的博客 873

AD9361功能介绍和使用

AD9361使用分数分频锁相环(PLL)来产生发射机和接收机本地振荡器(LO)频率和BB PLL。BB PLL 可用于数据转换、数字滤波器和 |/O 端口。PLL的参考时钟可以由外部振荡器或外部晶体(XO)和数字可编程片内可变电容提供,电容微调产生参考时钟频率,XO和微调电容的组合统称为DCXO。有多个天线输入的分集系统。接收链数据首先经过低噪声放大器(LNA),然后是同相(1)和正交(Q)放大器,混频器和频带整形滤波器,可将接收到的信号下变频为基带以进行数字化。时分双工(TDD)和频分双工(FDD)。。。

wangjie36的博客 1万+

C++开发测试工具gmock的使用详解

目录一、简单Demo二、断言2.1 ASSERT和EXPECT2.2 流三、测试TEST()四、调用测试和main() 上文(C++开发测试工具gmock的安装与使用超详解)介绍了gmock的安装、配置与基本使用案例,本文将详细介绍一下gmock的基本语法,结合上文一起食用效果更佳哦~ 一、简单Demo 首先来编写一个简单Demo,编写代码之前,首先需要将解决方案的平台与目标程序一致,这里选择的是x64,然后版本也要与目标程序一致,这里选择的是release版本。 新建一个头文件,命名为demo.h,声明

Wendy的博客 4968

让 IF 更好读:在 ABAP 里尽量使用正向条件的实战指南

摘要:SAP系统开发中,代码可读性与可维护性的关键往往在于条件判断的写法。Clean ABAP风格指南建议尽量采用正向表达的条件判断,如使用has_entries = abap_true而非否定式写法。正向表达能降低理解成本,避免"否定的否定"带来的逻辑混乱,但不应为追求正向而制造空分支。在团队协作中,正向条件更利于代码评审和测试覆盖,建议通过工具检查和智能评审确保规范执行。落地时可关注变量命名正向化、避免空分支、主流程清晰展开等要点,以提升长期维护效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 245

C++开发测试工具gmock使用详解——对抽象接口类进行gmock打桩并测试

目录一、简单Demo1.1 共同约定1.2 小A任务1.3 我的任务1.4 常规运行1.5 测试输出二、基本流程三、MOCK_METHOD四、EXPECT_CALL 第一篇文章(C++开发测试工具gmock的安装与使用超详解)和第二篇文章(C++开发测试工具gmock的使用详解)分别对gmock的安装、配置与使用案例进行了详细介绍,本文将对抽象接口类进行gmock打桩测试进行介绍,结合上文一起食用效果更佳哦~ 一、简单Demo 首先来编写一个简单Demo,编写代码之前,首先需要将解决方案的平台与目标程序一致

Wendy的博客 1万+

Python re库【正则表达式操作库】全面讲解及代码示例

以下是Pythonre库的全面讲解,包含主要功能、常用方法及代码示例。完整代码和注释附后。正则表达式(Regular Expression)是用于匹配、查找、替换字符串的工具,通过特定语法定义模式。?{n}[...][a-z]A|B\d[0-9]\D\s\S\w\Wre从字符串匹配模式,返回Match对象或None。在字符串中第一个匹配项,返回Match对象或None。返回所有匹配项的。返回所有匹配项的Match对象)。替换匹配项,返回新字符串。根据模式分割字符串,返回列表。通过。

记录点滴 1161

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++开发测试工具gmock的安装与使用超详解

目录一、gmock介绍二、gmock下载三、gmock配置3.1 打开解决方案3.2 进行相应设置3.3 目标程序的配置四、测试 Demo五、常见问题 一、gmock介绍 gmock是google公司推出的一款开源的白盒测试工具。gmock是个很强大的东西,测试一个模块的时候,可能涉及到和其他模块交互,可以将模块之间的接口mock起来,模拟交互过程。其作用就类似白盒测试中的打桩的概念。 二、gmock下载 gmock官网:https://github.com/google/googletest。 截止到20

Wendy的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

XCode使用googletest(包括googlemock)

1. 下载最新的googletest源代码,也可以从此处下载:https://pan.baidu.com/s/1qRn5BCpUIBz_PY0m6-7pgg 2. 解压后进入googletest/make,执行make,copy libgtest.a到/usr/local/lib,并copy include/gtest目录到/usr/local/include; 然后进入googlemock/...

运用之妙,存乎一心 3490

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

gtest和gmock在C++中的使用过程

gtest的使用流程

406156440的博客 1954

白盒测试之gmock入门篇

一、gmock是什么 gmock是google公司推出的一款开源的白盒测试工具。gmock是个很强大的东西,测试一个模块的时候,可能涉及到和其他模块交互,可以将模块之间的接口mock起来,模拟交互过程。其作用就类似白盒测试中的打桩的概念。 下面简单的说说打桩在白盒测试中的重要性: 1、比如银行业务,需要测试业务模块。此时,不可能去操作真实的数据库,并且搭建新的数据库可能比较复杂或者耗时。那么...

weixin_30723433的博客 1700

gmock学习01---Linux配置gmock

本文目的 本文主要介绍gmock 1.6.0版本在Linux上如何部署和使用。   gmock是做什么的? 使用C++手动编写mock对象将会是一件十分耗时,易于出错,枯燥乏味的事情。gmock提供一整套mock 框架,帮助你完成这些脏活累活。   编译gmock 1 下载:gmock官方下载 2 上传:使用WinScp或其他工具将gmock_1.x.x.zip上传到linux机器...

weixin_34110749的博客 308

gmock简单实例

#include <gtest/gtest.h> #include <gmock/gmock.h> using namespace testing; class A { public: int set(int num) { value = num; return num; }

chent86的博客 4853
上一篇: 测试自动化 2011/06/09 GMock
下一篇: 测试自动化 2011/06/11 -2
printf1998
博客等级 码龄16年 14粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值