ubuntu使用gtest单元测试框架
gtest是google的开源c++单元测试框架,下面是在ubuntu上的使用步骤。
####安装 gtest development package:
sudo apt-get install libgtest-dev
注意这一步只是安装源代码到/usr/src/gtest,需要用cmake构建Makefile然后再make生成静态库。1
2
3
4
5
6sudo apt-get install cmake #安装cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp *.a /usr/lib/ #拷贝生成的库到/usr/lib/
####写一个简单的测试代码testgcd.cpp1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21//testgcd.cpp
#include <gtest/gtest.h>
int Gcd(int a, int b) //计算最大公约数
{
return 0 == b ? a : Gcd(b, a % b);
}
TEST(GcdTest, IntTest)
{
EXPECT_EQ(1, Gcd(2, 5));
EXPECT_EQ(2, Gcd(2, 5));
EXPECT_EQ(2, Gcd(2, 4));
EXPECT_EQ(3, Gcd(6, 9));
}
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
接着用g++编译,注意要链接的库(也可以用cmake构建,这只是个简单的示例):
g++ testgcd.cpp -lgtest_main -lgtest -lpthread
执行下
./a.out
看看输出结果:
1 | [==========] Running 1 test from 1 test case. |
输出结果也比较容易看懂。关于gtest更多文档和使用可以参考官方手册。
####工程下的测试
当测试项目比较多的时候,一般会分离头文件和实现文件,然后可以用cmake构建。
1 | //!gcd.h |
接下来写一个CMakeLists.txt:(具体信息参考cmake的文档)
1 | cmake_minimum_required(VERSION 2.6) |
执行:
1 | cmake CMakeLists.txt |
可以看到相同的执行结果。
#####参考
Google C++ Testing Framework
Getting started with Google Test (GTest) on Ubuntu
A quick introduction to the Google C++ Testing Framework