gtest、cmake使用
gtest github:
https://github.com/google/googletest
学习:玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
一、安装
1、gtest不是传统的unix安装模式(./configure; make; make install)
2、进入 ${GTEST_DIR}
g++ -isystem include -I./ -pthread -c src/gtest-all.cc
ar -rv libgtest.a gtest-all.o
(We need -pthread as Google Test uses threads.)
官方指导:https://github.com/google/googletest/blob/master/googletest/README.md
参考:http://blog.csdn.net/macchan/article/details/17657231#
二、验证是否成功
cd ${GTEST_DIR}/make 会发现这个文件下有个Makefile
make 会生成一些sample执行文件
选一个执行,./sample1_unittest,如果看到典型的gtest输出log就说明成功了

三、使用示例
1、安装与验证完毕之后还不能直接使用
将${GTEST_DIR}/include/gtest这个目录拷贝到/usr/local/include
将${GTEST_DIR}/libgtest.a拷贝到/usr/local/lib
这样就可以直接使用头文件<gtest/gtest.h>和静态库libgtest.a
2、创建~/test目录,然后将${GTEST_DIR}/samples里面的sample1.cc sample1.h sample1_unittest.cc,拷贝过来。
3、写一个Test.cc,代码如下
#include "smaple1.h"
#include <gtest/gtest.h> int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc,argv);
RUN_ALL_TESTS():
return ;
}
4、编译过程如下
$g++ -o sample1.o -c sample1.cc
$g++ -o sample1_unittest.o -c sample1_unittest.cc
$g++ -o Test.o -c Test.cc
$g++ -o main sample1.o sample1_unittest.o Test.o -lgtest -lpthread
由于/usr/local/include被拷贝了gtest目录 /usr/local/lib被拷贝了libgtest.a所以可以
直接使用<gtest/gtest.h>与-lgtest,另外也需要libpthread.a所以要加-lpthread
5、最后生成可执行文件main,$./main的输出结果与上面的./sample1_unittest一样的结果。
四、结合cmake使用gtest
参考:http://stackoverflow.com/questions/33638433/setup-google-test-in-clion
样例:https://github.com/kaizouman/gtest-cmake-example
具体步骤:
1、在已有的工程下创建一个单元测试目录${unit_test}
2、创建${unit_test}/gtest.cpp
#include "gtest/gtest.h"
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
3、创建${unit_test}/test1.cpp
#include <gtest/gtest.h>
TEST(FooTest, Test1) {
EXPECT_EQ(, );
EXPECT_TRUE( > );
}
4、创建${unit_test}/CMakeLists.txt
set(EXECUTABLE_OUTPUT_PATH ../build/bin) include_directories(../include) add_executable(runUnitTests
gtest.cpp
test1.cpp) target_link_libraries(runUnitTests
gtest
pthread)
编译运行
gtest、cmake使用的更多相关文章
- [Ubuntu篇] 在ubuntu上源码编译gtest,编写gtest-config.cmake并测试
本文首发于个人博客https://kezunlin.me/post/4a1427cf/,欢迎阅读! compile gtest on ubuntu 16.04 Guide compile gtest ...
- cmake,gtest单元测试程序
参考:http://blog.csdn.net/stdcoutzyx/article/details/8284183 PROJECT (HELLO) SET(SRC_LIST main.c) MESS ...
- Google C++单元测试框架---Gtest框架简介(译文)
一.设置一个新的测试项目 在用google test写测试项目之前,需要先编译gtest到library库并将测试与其链接.我们为一些流行的构建系统提供了构建文件: msvc/ for Visual ...
- 直接在CMake项目中编译GoogleTest和GoogleMock作为项目的一部分
直接在CMake项目中编译GoogleTest和GoogleMock作为项目的一部分 本文是关于如何将GoogleTest和GoogleMock在没有预先编译安装在机器的情况下,直接在项目中作为项目的 ...
- 简单易懂的单元测试框架-gtest(二)
简介 事件机制用于在案例运行前后添加一些操作(相当于挂钩函数).目前,gtest提供了三种等级的事件,分别: 全局级,所有案例执行的前后 TestSuite级,某一个案例集的前后 TestCa ...
- 简单易懂的单元测试框架-gtest(一)
简介 gtest是google开源的一个单元测试框架,以其简单易学的特点被广泛使用.该框架以第三方库的方式插入被测代码中.同其他单元测试框架相似,gtest也通过制作测试样例来进行代码测试.同 ...
- ubuntu 安装 google Gtest [转]有效性待验证
最近在做一些东西,用过gtest,废话少说,现讲其再ubuntu上安装的 方法贴出来,以供朋友们参考: 安装gtest分三步: 1.安装源代码 在ubuntu的桌面上,右键选择打开终端,在终端中输入如 ...
- Mac下GTest的基本使用
Mac下GTest的基本使用 gtest全称Google C++ Testing Framework,它是从谷歌内部诞生并受到业界追捧的一个非常优秀的测试框架,支持如自动发现测试.自定义断言.死亡测试 ...
- gtest 学习
mac 安装gtest 1.git clone https://github.com/google/googletest 2.cd googletest 3.brew install cmake如果没 ...
随机推荐
- DAGScheduler stage 划分算法
DAGScheduler stage 划分算法 stage划分算法很重要,对于spark开发人员来说,必须对stage划分算法很清晰,知道自己编写的spark Application被划分成了几个jo ...
- Mysql备份还有这么多套路,还不了解下?
逻辑备份和物理备份 逻辑备份 逻辑备份用于备份数据库的结构(CREAET DATABASE.CREATE TABLE)和数据(INSERT),这种备份类型适合数据量小.跨SQL服务器.需要修改数据等场 ...
- centos7 编译安装 php7.3.11
1.安装依赖 yum install -y libxml2 *openssl* libcurl* libjpeg* libpng* freetype* libmcrypt* gcc gcc-c++ 2 ...
- shell配置文件
个人配置主要集中在-/.profile文件中 打开新的交互式shell时,配置文件的执行顺序是/etc/profile /etc/bashrc ~/.profile 最后是~/.bashrc ...
- Asp.net Core 系列之--5.认证、授权与自定义权限的实现
ChuanGoing 2019-11-24 asp.net core系列已经来到了第五篇,通过之前的基础介绍,我们了解了事件订阅/发布的eventbus整个流程,初探dapper ORM实现,并且简单 ...
- vue项目中的跨域源请求拦截问题CORS头缺少'Access-Control-Allow-Origin'
这里使用的是axios发请求出现的. 访问的api接口是: 在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable 解决办法: 1.检查请求方 ...
- 在Windows Server 2019通过Docker Compose部署Asp.Net Core
一.安装Docker Enterprise 安装文档是: https://docs.docker.com/install/windows/docker-ee/ 安装完成后,如下图 二.首先,拉取一个W ...
- 【Luogu P3388】割点模板
Luogu P3388 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多,就称这个点集为割点集合. 如果某个割点集合只含有一个顶点X(也即{X ...
- python遍历所有盘符下的图片并拷贝下来
最近在学习python,闲着无聊就试着写啦这个小的脚本,虽然有很多不足,但是还是收获不少. 该脚本的功能: ①遍历本地计算机中的所有盘符,并将名称记录下来: ②循环遍历盘符下的所有图片(当然这里可以根 ...
- 关于vue中的videoPlayer的src视频地址参数动态修改(网上一堆错误方法,被误导很久,自己找到了正确的方法,供大家借鉴)
方法很简单:相信大家的问题应该是改变src的值吧,动态赋值这一步简单.this.playerOptions['sources'][0]['src'] 就是这一步解决提取src问题,主要部分用绿色框起来 ...