- 下载googletest源码
- 源码路径
/home/ssw/googletest-master/
- 编译安装Googletest环境
[root@localhost googletest]# cd /home/ssw/googletest-master/googletest
[root@localhost googletest]# g++ -isystem include -I. -pthread -c src/gtest-all.cc
[root@localhost googletest]# ar -rv libgtest.a gtest-all.o
当前路径下生成两个新文件gtest-all.o
和libgtest.a
生成的libgtest.a
可拷贝它到C++单元测试项目中去,以便使用。
- 编写简单功能的函数
4.1 在/home/ssw/googletest-master/googletest
目录下新建文件夹
[root@localhost googletest]# mkdir example
4.2 编写functions.h 头文件
//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
4.3 编写functions.cpp
//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; }
4.4 编写单元测试代码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));
}
4.4 编写测试代码TestAll.cpp
//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;
}
4.5 编译与运行测试
在example
目录下新建lib目录,并复制libgtest.a到其中。再将include
文件夹复制到example
目录下。
//编译
$ 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
最终得到一个main的可执行程序,运行./main
完成测试
如果希望输出xml文件结果,再main函数中加入
testing::GTEST_FLAG(output) = "xml:";
再重新编译,生成main可执行文件。运行./main --gtest_output=xml