- 下載googletest源碼
- 源碼路徑
/home/ssw/googletest-master/
- 編譯安裝Googletest環(huán)境
[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
當(dāng)前路徑下生成兩個新文件gtest-all.o
和libgtest.a
生成的libgtest.a
可拷貝它到C++單元測試項目中去,以便使用眯娱。
- 編寫簡單功能的函數(shù)
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結(jié)果文件
testing::InitGoogleTest(&argc,argv); //初始化
RUN_ALL_TESTS(); //跑單元測試
return 0;
}
4.5 編譯與運行測試
在example
目錄下新建lib目錄扣墩,并復(fù)制libgtest.a到其中。再將include
文件夾復(fù)制到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的可執(zhí)行程序锐墙,運行./main
完成測試
如果希望輸出xml文件結(jié)果礁哄,再main函數(shù)中加入
testing::GTEST_FLAG(output) = "xml:";
再重新編譯,生成main可執(zhí)行文件溪北。運行./main --gtest_output=xml