ubuntu使用gtest单元测试框架

转:http://ningning.today/2014/11/12/%E6%B5%8B%E8%AF%95%E5%BC%80%E5%8F%91/ubuntu%E4%BD%BF%E7%94%A8gtest%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95%E6%A1%86%E6%9E%B6/

最近接触了gtest,google的开源c++单元测试框架。讲一下在ubuntu上的使用步骤。


安装 gtest development package:

sudo apt-get install libgtest-dev

注意这一步只是安装源代码到/usr/src/gtest,需要用cmake构建Makefile然后再make生成静态库。

1

2

3

4

5

6
sudo apt-get install cmake    #安装cmake

cd /usr/src/gtest

sudo cmake CMakeLists.txt

sudo make

sudo cp *.a /usr/lib/    #拷贝生成的库到/usr/lib/

写一个简单的测试代码testgcd.cpp

1

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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
[==========] Running 1 test from 1 test case.

[----------] Global test environment set-up.

[----------] 1 test from GcdTest

[ RUN      ] GcdTest.IntTest

testgcd.cpp:11: Failure

Value of: Gcd(2, 5)

Actual: 1

Expected: 2

[  FAILED  ] GcdTest.IntTest (0 ms)

[----------] 1 test from GcdTest (0 ms total)

[----------] Global test environment tear-down

[==========] 1 test from 1 test case ran. (0 ms total)

[  PASSED  ] 0 tests.

[  FAILED  ] 1 test, listed below:

[  FAILED  ] GcdTest.IntTest

1 FAILED TEST

输出结果也比较容易看懂。关于gtest更多文档和使用可以参考官方手册。


工程下的测试

当测试项目比较多的时候,一般会分离头文件和实现文件,然后可以用cmake构建。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29
//!gcd.h

#ifndef GCD_H

#define GCD_H

int Gcd(int a, int b); 

#endif

//!gcd.cpp

#include "gcd.h"

int Gcd(int a, int b)

{

return 0 == b ? a : Gcd(b, a % b); 

}

//!testgcd.cpp

#include "gcd.h"

#include <gtest/gtest.h>

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();

}

接下来写一个CMakeLists.txt:(具体信息参考cmake的文档)

1

2

3

4

5

6
cmake_minimum_required(VERSION 2.6)

# Locate GTest

find_package(GTest REQUIRED)include_directories(${GTEST_INCLUDE_DIRS}) 

# Link testgcd with what we want to test and the GTest and pthread 

libraryadd_executable(testgcd testgcd.cpp gcd.cpp)

target_link_libraries(testgcd ${GTEST_LIBRARIES} pthread)

执行:

1

2

3
cmake CMakeLists.txt

make

./testgcd

可以看到相同的执行结果。


参考

Google C++ Testing Framework

Getting started with Google Test (GTest) on Ubuntu

A quick introduction to the Google C++ Testing Framework

时间: 2024-10-15 16:11:10

ubuntu使用gtest单元测试框架的相关文章

玩转Google开源C++单元测试框架Google Test系列(gtest)之一 初识gtest

进入文件夹执行: ./configure make make install 完毕即可正常使用: (1)包含include目录 -I/root/scp/gtest/gtest-1.3.0: (2)包含lib中的动态链接库:-lgtest -L/root/scp/gtest/gtest-1.3.0/lib 示例代码: [cpp] view plaincopy #include <gtest/gtest.h> int Foo(int a, int b) { if (a == 0 || b == 0

Google C++单元测试框架---GTest的Sample1和编写单元测试的步骤

如果你还没有搭建gtest框架,可以参考我之前的博客:http://www.cnblogs.com/jycboy/p/6001153.html.. 1.The first sample: sample1 你把github上的项目导来之后,github地址:https://github.com/google/googletest,在目录:..(你的目录)\googletest-master\googletest\samples是你的samples文件夹. 在VS中创建项目:GtestSamples

玩转Google开源C++单元测试框架Google Test系列(gtest)(转)

转自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了. 其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代

玩转Google开源C++单元测试框架Google Test系列(gtest)之一 初识gtest in Linux

按照此文http://blog.csdn.net/calmreason/article/details/38488765下载源码包:gtest-1.3.0.zip,解压 进入文件夹执行: ./configure make make install 完毕即可正常使用: (1)包含include目录 -I/root/scp/gtest/gtest-1.3.0: (2)包含lib中的动态链接库:-lgtest -L/root/scp/gtest/gtest-1.3.0/lib 示例代码: #inclu

Google C++单元测试框架

一.概述 Google C++单元测试框架(简称Gtest),可在多个平台上使用(包括Linux, Mac OS X, Windows, Cygwin和Symbian),它提供了丰富的断言.致命和非致命失败判断,能进行值参数化测试.类型参数化测试."死亡测试".Gtest是一个开源的项目,其源码可以从这里下载,目前的代码发行版是1.6.0. 编译 源码包中的README文件说明了如何编译Gtest源码,目录msvc.xcode中分别包含了Windows.Mac OS X平台相关的项目文

Google开源C++单元测试框架Google Test

1.玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest 2.玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言 3.玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制 4.玩转Google开源C++单元测试框架Google Test系列(gtest)之四 - 参数化 5.玩转Google开源C++单元测试框架Google Test系列(gtest)之五 -

单元测试框架的开发流程

简介 单元测试可以更快地发现代码中的错误,因此各个编程语言都拥有了专门的单元测试框架.本文按照一般的开发流程来讨论单元测试框架,即需求分析.设计实现,应用模型等等,希望可以提取单元测试的共性,为理解不同的测试框架提供支持. 需求分析 从单元测试的机制可以发现一部分隐藏需求,总结如下: 独立测试:针对一个软件单元. 用例组织:可以选择执行测试. 自动执行测试用例:可以重复执行. 自动验证测试结果:可以帮助排错过程. 满足以上几点,单元测试甚至可以作为一个可以执行的规格说明和文档. 设计实现 现有的

玩转Google开源C++单元测试框架Google Test系列(转载)

越来越多公司采用敏捷开发,单元和回归测试越来越重要,GTest作为最佳C++单元测试工具越来越多的被使用.转自 http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了. 其实gtest本身的

转:玩转Google开源C++单元测试框架Google Test系列

转自http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了. 其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉