单元测试是一种软件开发过程中常用的测试方法,它的目标是隔离程序的各个部分,并验证这些单独的部分是否正确。Googletest是C++单元测试框架中非常流行的一种,它支持多种平台,包括Linux、Mac OS X、Windows、Cygwin、Windows CE和Symbian。Googletest基于xUnit架构,提供了自动测试发现、丰富的断言集合、用户自定义断言、死亡测试、致命和非致命失败、值和类型参数化测试、多种运行测试的选项以及XML测试报告生成等功能。
本文将逐步介绍如何在EclipseJuno中设置Googletest进行C++单元测试。
Googletest是C++单元测试框架中非常流行的一种,它支持多种平台,包括Linux、Mac OS X、Windows、Cygwin、Windows CE和Symbian。Googletest基于xUnit架构,提供了自动测试发现、丰富的断言集合、用户自定义断言、死亡测试、致命和非致命失败、值和类型参数化测试、多种运行测试的选项以及XML测试报告生成等功能。
从以下链接下载Googletest:https://code.google.com/p/googletest/downloads/list。当前版本为1.7.0。
解压gtest-1.7.0,并打开文件夹gtest-1.7.0。该文件夹包含多个文件,其中“samples”文件夹提供了Googletest的十个示例;“src”文件夹包含源代码。
打开Eclipse,依次点击File->New->C++ Project,输入项目名称,例如“unit_test”,然后点击Next,选择“Debug”和“Release”配置,点击Finish,项目“unit_test”将出现在“Project Explorer”的左侧标签页中。
1. 在项目“unit_test”下新建源代码文件夹“src”。 2. 在项目“unit_test”下新建头文件文件夹“include”。 3. 在项目“unit_test”下新建文件夹“gtest_src”以存储gtest库。 4. 在项目“unit_test”下新建文件夹“test”以存储测试代码。
1. 将Googletest库添加到文件夹“gtest_src”。 接下来,需要将Googletest库添加到“gtest_src”文件夹中,通过执行以下命令来实现。这一步基本上就是将gtest.h和gtest_all.cc复制到“gtest_src/gtest”文件夹中。 执行上述命令后,文件夹的快照如下所示。
2. 添加源代码。 在文件夹“include”下新建头文件“factorial.h”。代码如下:
#ifndef FACTORIAL_H_
#define FACTORIAL_H_
int factorial(int n);
#endif /* FACTORIAL_H_ */
然后在文件夹“src”下新建源代码文件,例如“factorial.cpp”。代码如下:
int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
3. 添加测试代码。 在文件夹“test”下新建源文件,输入测试代码文件名,测试代码:“test_factorial.cpp”。代码如下:
#include "gtest/gtest.h"
#include "factorial.h"
TEST(IntegerFunctionTest, negative) {
EXPECT_EQ(1, factorial(-5));
EXPECT_EQ(1, factorial(-1));
EXPECT_GT(factorial(-10), 0);
}
TEST(IntegerFunctionTest, DISABLED_zero) {
EXPECT_EQ(1, factorial(0));
}
TEST(IntegerFunctionTest, postive) {
EXPECT_EQ(1, factorial(1));
EXPECT_EQ(2, factorial(2));
EXPECT_EQ(6, factorial(3));
EXPECT_EQ(40320, factorial(8));
}
以及“gtest_main.cpp”。代码如下:
#include
#include "gtest/gtest.h"
GTEST_API_ int main(int argc, char **argv) {
printf("Running main() from gtest_main.cc\n");
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
1. 项目“unit_test”->属性->C++链接器->库->库(-I),输入“pthread”并点击“OK”。 2. 文件夹“test”->属性->C/C++构建->设置->跨G++编译器->包括->包含路径(-I),然后点击“添加..”->“工作区..”,添加文件夹“include”和“gtest_src”到路径中。 3. 文件夹“gtest_src”->属性->C/C++构建->设置->跨G++编译器->包括->包含路径(-I)。然后点击“添加..”->“工作区..”,添加文件夹“gtest_src”到路径中。
完成以上步骤后,就已经设置好了运行环境,可以开始进行单元测试了。
1. 在Eclipse中,依次点击Project->Build All或按Ctrl+B来构建项目。 2. 依次点击Run->Run或按Ctrl+F11来运行可执行文件。 或者,可以直接在终端中,进入Debug文件夹并运行可执行文件“unit_test”。