跨平台C++单元测试框架GTest -- Linux下试用

转载 2013年12月04日 09:19:33

转自:http://graybull.is-programmer.com/posts/37871.html

GTest是Google开发的跨平台而且开源的C++单元测试框架,很好很强大。首先奉上下载地址:https://code.google.com/p/googletest/ 。关于GTest在Windows下使用,CoderZh给出了十分详尽的使用指南:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 。

这里,是我在Linux下初尝GTest 1.6.0。

  • 生成gtest库
  • 编写简单功能函数
  • 编写单元测试代码
  • 编译与运行测试

生成gtest的静态库

首先下载gtest源代码包,然后解压。

编译生成gtest-all.o文件(注意-I后无空格):

$g++ -I./include -I./  -c ./src/gtest-all.cc

再生成.a静态库文件:

ar -rv libgtest.a gtest-all.o

若成功,会在当前目录下生成libgtest.a库。可拷贝它到C++单元测试项目中去,以便使用。

编写简单功能函数

新建一个项目(目录)GTestApp,包含两个代码文件: functions.h, functions.cpp。实现两个int变量的加减乘除功能。

//functions.h
#ifndef _FUNCTIONS_H
#define _FUNCTIONS_H

int add(int one,int two);
int myMinus(int one,int two);
int multiply(int one,int two);
int divide(int one,int two);
#endif
//functions.cpp
#include "functions.h"
int add(int one,int two){
        return one+two;
}
int myMinus(int one,int two){
        return one-two;
}
int multiply(int one,int two){
        return one*two;
}
int divide(int one,int two){
        return one/two;
}

编写单元测试代码

单元测试的内容写在functionsTest.cpp中:

//functionsTest.cpp
#include "gtest/gtest.h"
#include "functions.h"

TEST(AddTest,AddTestCase){
        ASSERT_EQ(2,add(1,1));
}
TEST(MinusTest,MinusTestCase){
        ASSERT_EQ(10,myMinus(25,15));
}
TEST(MultiplyTest,MutilplyTestCase){
        ASSERT_EQ(12,multiply(3,4));
}
TEST(DivideTest,DivideTestCase){
        ASSERT_EQ(2,divide(7,3));
}

当然,还需要编写一个运行测试的主函数:

//TestAll.cpp
#include "gtest/gtest.h"
#include <iostream>
using namespace std;

int main(int argc,char* argv[])
{
        //testing::GTEST_FLAG(output) = "xml:"; //若要生成xml结果文件
        testing::InitGoogleTest(&argc,argv); //初始化
        RUN_ALL_TESTS();                     //跑单元测试
        return 0;
}

编译与运行测试

1) 复制gtest库文件

在GTestApp目录下新建lib目录,并复制libgtest.a到其中。

$mkdir lib

$cp <the path>/libgtest.a lib

2) 复制gtest头文件

gtest1.6.0目录下的include包含了需使用到的头文件。把include复制到GTestApp中来。

3)编译和链接

方法一,让我们手工做一次。

编译:

$ g++ -o functions.o -c functions.cpp

$ g++ -o functionsTest.o -c funciontsTest.cpp -I./include

$ g++ -o TestAll.o -c TestAll.cpp -I./include

链接:

$ g++ -o main *.o -I./include -L./lib -lgtest -lpthread      #注意不是-libgtest,同时需要用到 libpthread这个库

方法二,用我的万能Makefile,请看 http://graybull.is-programmer.com/posts/37758.html

只需对Makefile作以下修改:

EXECUTABLE := main
LIBDIR:= ./lib
LIBS := gtest pthread
INCLUDES:= ./include

然后,运行$ make 即可生成可执行文件main。

4)运行测试

$./main

若要生成xml结果文件,也可添加运行选项:

$ ./main --gtest_output=xml

输出结果:

<div>[jackie@localhost GTestApp]$ ./main
[==========] Running 4 tests from 4 test cases.
[----------] Global test environment set-up.
[----------] 1 test from AddTest
[ RUN      ] AddTest.AddTestCase
[       OK ] AddTest.AddTestCase (0 ms)
[----------] 1 test from AddTest (0 ms total)

[----------] 1 test from MinusTest
[ RUN      ] MinusTest.MinusTestCase
[       OK ] MinusTest.MinusTestCase (0 ms)
[----------] 1 test from MinusTest (0 ms total)

[----------] 1 test from MultiplyTest
[ RUN      ] MultiplyTest.MutilplyTestCase
[       OK ] MultiplyTest.MutilplyTestCase (0 ms)
[----------] 1 test from MultiplyTest (0 ms total)

[----------] 1 test from DivideTest
[ RUN      ] DivideTest.DivideTestCase
[       OK ] DivideTest.DivideTestCase (0 ms)
[----------] 1 test from DivideTest (0 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 4 test cases ran. (0 ms total)
[  PASSED  ] 4 tests.
[jackie@localhost GTestApp]$ ./main -output=xml
[==========] Running 4 tests from 4 test cases.
[----------] Global test environment set-up.
[----------] 1 test from AddTest
[ RUN      ] AddTest.AddTestCase
[       OK ] AddTest.AddTestCase (0 ms)
[----------] 1 test from AddTest (0 ms total)

[----------] 1 test from MinusTest
[ RUN      ] MinusTest.MinusTestCase
[       OK ] MinusTest.MinusTestCase (0 ms)
[----------] 1 test from MinusTest (0 ms total)

[----------] 1 test from MultiplyTest
[ RUN      ] MultiplyTest.MutilplyTestCase
[       OK ] MultiplyTest.MutilplyTestCase (0 ms)
[----------] 1 test from MultiplyTest (0 ms total)

[----------] 1 test from DivideTest
[ RUN      ] DivideTest.DivideTestCase
[       OK ] DivideTest.DivideTestCase (0 ms)
[----------] 1 test from DivideTest (0 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 4 test cases ran. (0 ms total)
[  PASSED  ] 4 tests.
</div>

Google C++测试单元工具 gtest简单使用(win vs & linux)

转载于 作者:fengbingchun 地址:http://blog.csdn.net/fengbingchun/article/details/39667571我的实践如下(win7, vs20...
  • qq_26437925
  • qq_26437925
  • 2017年02月22日 10:03
  • 1280

linux下使用gtest框架进行c/c++单元测试

前言google test(以下简称gtest)是谷歌的开源C++单元测试框架,用来做c/c++的单元测试比较方便。下面对于它在linux下的使用做简单的介绍,同时也作为自己的笔记。因为仅作示例,因此...
  • hyb612
  • hyb612
  • 2017年07月30日 19:56
  • 686

Linux下gtest的安装与使用

一、下载(本人使用的是gtest-1.7.0) gtest列表:https://code.google.com/p/googletest/downloads/list 直接下载:gtest-1.7.0...
  • changqing5818
  • changqing5818
  • 2015年04月08日 16:47
  • 1503

在linux上搭建gtest

1.获取 wget https://googletest.googlecode.com/files/gtest-1.7.0.zip2.编译 unzip gtest-1.7.0.zip cd gt...
  • mishifangxiangdefeng
  • mishifangxiangdefeng
  • 2015年10月18日 10:21
  • 2770

gtest学习(一)在linux下的安装

gtest学习(一)在linux下的安装 chenxun 一、下载gtest gtest是google的,被墙了,所以百度自己下载一个版本,我下载的版本如下图所示。 下载完后弄到自己的linux...
  • chenxun2009
  • chenxun2009
  • 2016年12月14日 15:06
  • 1280

gtest 编译、安装和使用

参考  http://blog.csdn.net/pbe_sedm/article/details/42240885
  • muyuxuebao
  • muyuxuebao
  • 2016年04月07日 14:27
  • 1103

gtest 编译、安装和使用

本例以 gtest-1.7.0 为例进行讲解。 一、要求: 1. 安装 cmake 二、编译 1. 下载 gtest 源码包,并解压,如:/home/hdc/g...
  • u010229420
  • u010229420
  • 2016年06月29日 15:32
  • 1236

Linux下Google Test测试环境安装和使用,实战总结

google test(libgtes)是由谷歌开发的一款基于xunit框架的跨平台单元测试框架,C#上的NUnit,Java的JUnit写单元测试非常容易,也不乏可视化工具与IDE集成插件,深受喜欢...
  • officercat
  • officercat
  • 2014年09月15日 22:22
  • 5980

gtest的使用(Linux/Windows)方法介绍入门级

  • 2015年06月03日 09:14
  • 1.93MB
  • 下载

每天进步一点点——ubuntu 13.10中安装google的gtest库

gtest测试框架是google开源的用于在不同平台上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)为编写C++测试用例的项目。它是基于xUnit...
  • cywosp
  • cywosp
  • 2014年04月14日 15:57
  • 8368
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:跨平台C++单元测试框架GTest -- Linux下试用
举报原因:
原因补充:

(最多只允许输入30个字)