ubuntu下 google gmock使用
来源:互联网 发布:淘宝助理ipad版 编辑:程序博客网 时间:2024/05/01 11:34
资源github和网上,但是发现大部分都直接给出样例和运行图,windows下不给环境配置,linux下的不给makefile(或者不单独拎出来),太坑。
下文是ubuntu14.04 32bit + gmock1.8.0实践,给出了完整代码(包括Makefile)和截图,如有错误,望指出.
环境配置
直接github下载最新版
https://github.com/google/googletest/tree/release-1.8.0
ubuntu下解压后
$ ./travis.sh$ cmake ./CMakeLists.txt$ make$ sudo make install
安装成功后(.h .lib)
john@ubuntu:/usr/local/include$ lsgmock gtest lauxlib.h luaconf.h lua.h lua.hpp luajit-2.1 lualib.hjohn@ubuntu:/usr/local/include$
john@ubuntu:/usr/local/lib$ lslibgmock.a liblua.a libluajit-5.1.so.2.1.0 pkgconfiglibgmock_main.a libluajit-5.1.a lua python2.7libgtest.a libluajit-5.1.so luarocks python3.4libgtest_main.a libluajit-5.1.so.2 node_modulesjohn@ubuntu:/usr/local/lib$
gtest使用还可以参考我的博文,博文后面有github学习笔记地址
http://blog.csdn.net/qq_26437925/article/details/56479841
gmock实践
下面是ubuntu 14.04 32bit, gmock测试 共6个文件
参考
http://blog.csdn.net/gubenpeiyuan/article/details/50678697
- Messgener.h(未实现的接口)
#ifndef SRC_MESSENGER_H_#define SRC_MESSENGER_H_#include <string>using namespace std;class Messenger{public: virtual ~Messenger() {} virtual string getMessage() = 0; virtual int add(int a, int b) = 0;};#endif /* SRC_MESSENGER_H_ */
- HelloWorld.h (调用了Messgener类)
#ifndef SRC_HELLOWORLD_H_#define SRC_HELLOWORLD_H_#include <string>#include "Messgener.h"using namespace std;class HelloWorld{public: HelloWorld(); virtual ~HelloWorld(); string getMessage(Messenger* messenger) const; int hello_add(Messenger* messenger, int a, int b) const;};#endif /* SRC_HELLOWORLD_H_ */
- HelloWord.cpp
#include "HelloWorld.h"#include "Messgener.h"HelloWorld::HelloWorld(){}HelloWorld::~HelloWorld(){}string HelloWorld::getMessage(Messenger* messenger) const{ return messenger->getMessage();}int HelloWorld::hello_add(Messenger* messenger,int a, int b) const{ return messenger->add(a, b);}
- MockMessgener.h 写未实现的Mock类
#ifndef SRC_MOCKMESSENGER_H_#define SRC_MOCKMESSENGER_H_#include "Messgener.h"#include <string>#include <gmock/gmock.h>using namespace std;class MockMessenger : public Messenger{public: MOCK_METHOD0(getMessage, string()); MOCK_METHOD2(add, int(int, int));};#endif /* SRC_MOCKMESSENGER_H_ */
- main.cpp 测试
#include "HelloWorld.h"#include <gtest/gtest.h>#include <gmock/gmock.h>#include "MockMessgener.h"#include <string>#include <memory>using namespace testing;TEST(HelloWorldTest, getMessage){ MockMessenger messenger; std::string msg = "Hello World"; EXPECT_CALL(messenger, getMessage()).WillRepeatedly(Return(ByRef(msg))); HelloWorld helloWorld; EXPECT_EQ("Hello World", helloWorld.getMessage(&messenger)); EXPECT_EQ("Hello World", helloWorld.getMessage(&messenger)); EXPECT_EQ("Hello World", helloWorld.getMessage(&messenger));}TEST(HelloWorldTest, add){ MockMessenger messenger; int a = 3; int b = 11; EXPECT_CALL(messenger, add(a, b)).WillRepeatedly(Return(a+b)); HelloWorld helloWorld; EXPECT_EQ(14, helloWorld.hello_add(&messenger, a, b));}
- Makefile
.PHONY: all cleanCC=g++OBJ_DIR=./objHEADERS=-I.DEBUG=-g -ggdbWALL=-Wall -WCFLAGS=$(WALL) $(DEBUG)L_CC=$(CC) $(CFLAGS) $(HEADERS)C_SRC=${wildcard *.cpp}C_OBJ=$(patsubst %.cpp, $(OBJ_DIR)/%.o, $(C_SRC)) #目标文件C_EXE=a.outall:prepare $(C_EXE)prepare: @if [ ! -d $(OBJ_DIR) ];then mkdir $(OBJ_DIR); fi$(C_EXE):$(C_OBJ) $(L_CC) $^ -o $@ -lgtest -lgtest_main -lgmock -lgmock_main -lpthread$(OBJ_DIR)/%.o:%.cpp $(L_CC) -c $< -o $@clean: @-rm -f $(C_EXE) @-rm -rf $(OBJ_DIR)
运行截图
gmock学习参考
http://blog.csdn.net/jfkidear/article/details/17565669
0 0
- ubuntu下 google gmock使用
- vs2010使用gmock
- vs2010使用gmock
- Google Mock(Gmock)简单使用和源码分析——简单使用
- ubuntu linux 下使用google eather
- ubuntu linux下使用google drive
- Google Mock(Gmock)简单使用和源码分析——源码分析
- gmock
- gmock
- gmock
- GMock
- Linux下安装gtest/gmock
- Linux下安装gtest/gmock
- linux下gtest&gmock下载
- Linux下CMake工程中gtest&gmock的安装与使用
- ubuntu下使用firefox播放google中国在线音乐
- google浏览器在ubuntu下不能使用root打开
- 在Ubuntu下使用Apt-Get安装Google Chrome
- 在VirtualBox中使用Docker Machine管理主机
- 在BIOS中开启虚拟化技术
- Linux下安装PyCharm
- 1019. 数字黑洞 (20)-PAT乙级A1069
- SSD: Single Shot MultiBox Detector in TensorFlow(翻译)
- ubuntu下 google gmock使用
- Composer移除依赖
- 在Kali Linux 2016.2下安装Discuz需要安装php5.6
- uva156
- 朋友圈问题(并查集)
- HTML的一些常用标签
- 矩阵范数优化
- POJ 2291 Rotten Ropes G++
- 设定html table 过宽下方出现滚动条