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如果没 ...
随机推荐
- BST的实现(二叉搜索树)
void Inorder(struct Tree *T); //中序 void Preorder(struct Tree *T); //前序 void Postorder(struct Tree *T ...
- 创建基于OData的Web API - Knowledge Builder API, Part III:Write Model
在前两篇文章<Part I: Business Scenario> 和<Part II: Project Setup>后,可以开始真正Model的创建. 步骤如下: 1. 创建 ...
- [LC]26题 Remove Duplicates from Sorted Array (删除排序数组中的重复项)(双指针法)(原地实现)
①中文题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- 新手如何正确安装python,视图详解
今天教新手如何安装python,因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的.学 ...
- abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之一(二十七)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- 从最近面试聊聊我所感受的.net天花板
#0 前言 入职新公司没多久,闲来无事在博客园闲逛,看到园友分享的面试经历,正好自己这段时间面试找工作,也挺多感想的,干脆趁这个机会总结整理一下.博主13年开始实习,14年毕业.到现在也工作五六年了. ...
- Linux入门之安装及相关知识。
一.VMware虚拟机安装与使用 1.1.VMware 简介 VMware是一个虚拟PC的软件,可以在现有的操 作系统上虚拟出一个新的硬件环境,相当于模拟 出一台新的PC.以此来实现在一台机器上真正 ...
- 官网例子,mt-field password获取不到
新尝试了Mint-UI,在使用表单组件Field时, 直接从demo中拷贝了如下代码: <mt-field label="username" placeholder=&quo ...
- Java基础知识总结之垃圾回收机制
垃圾回收机制 Java垃圾回收机制是Java语言的重要功能之一.当程序创建对象,数组等引用类型对象时,系统会自动在内存区为之分配一块内存,对象就保存在这块内存区内,当这块内存不再被任何变量引用时,这块 ...
- Redis为什么是单线程、及高并发快的3大原因详解
Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间: 3.redis使用多路复用技术,可以处理并发的连接.非阻塞 ...