C++ 单元测试入门指南,如何在 Eclipse 中设置 Google Test (gtest)?
在 Eclipse 中运行 Google Test
引言
软件测试是一个庞大而复杂的主题。单元测试是指将单个类与其他类隔离后进行测试。单元测试的目标是将程序的每个部分隔离,并证明各个部分是正确的。
背景
Googletest 是最流行的 C++ 单元测试框架之一。 它适用于各种平台(Linux、Mac OS X、Windows、Cygwin、Windows CE 和 Symbian)。 基于 xUnit 架构。 支持自动测试发现、丰富的断言集、用户定义的断言、死亡测试、致命和非致命故障、值和类型参数化测试、用于运行测试的各种选项以及 XML 测试报告生成。
在本文中,我将逐步介绍如何在 Eclipse Juno 中设置 Googletest。
设置步骤
步骤 1:下载 googletest。
从以下位置下载 googletest:
https://code.google.com/p/googletest/downloads/list
当前版本为 1.7.0。
步骤 2:解压 gtest-1.7.0。
解压 gtest-1.7.0,然后打开文件夹 gtest-1.7.0。 该文件夹包含几个文件。“samples”提供了 googletest 的十个示例;“src”包含源代码。
步骤 3:在 Eclipse 中设置 googletest 的工作环境
步骤 3.1 创建单元测试项目
打开 Eclipse,转到“文件”->“新建”->“C++ 项目”
在“项目名称:”中键入您的项目名称,例如“unit_test”,
然后单击“下一步”,在“选择配置”中选择“调试”和“发布”
然后单击“下一步”
然后单击“完成”,unit_test 将显示在“项目资源管理器”的左侧选项卡中。
步骤 3.2 添加 googletest 库、源代码和测试文件夹。
1. unt_test-> 新建 -> 文件夹,创建源代码(要测试的代码)文件夹“src”。
2. unt_test-> 新建 -> 文件夹,创建头文件文件夹“include”。
3. unt_test-> 新建 -> 文件夹,创建文件夹“gtest_src”来存储 gtest 库。
4. unt_test-> 新建 -> 文件夹,创建文件夹“test”来存储测试代码。
步骤 3.3 添加 googletest 库、源代码和测试代码。
1. 将 Googletest 库添加到文件夹 gtest_src。
接下来我们要做的就是通过运行以下命令将 google test 库添加到 gtest_src 文件夹。 此步骤基本上是将 gtest.h 和 gtest_all.cc 复制到 gtest_src/gtest 文件夹。
在终端中运行上述命令后,快照如下所示。
2. 添加源代码。
文件夹 include-> 新建 -> 头文件,然后创建头文件“factorial.h”。 代码如图所示。
//factorial.h
#ifndef FACTORIAL_H_
#define FACTORIAL_H_
int factorial(int n);
#endif /* FACTORIAL_H_ */
接下来,文件夹 src-> 新建 -> 源文件,输入源代码文件名,例如“factorial.cpp”。
//factorial.cpp
int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
3. 添加测试代码。
文件夹 test_code-> 新建 -> 源文件,输入测试代码文件名,
测试代码:“test_factorial.cpp”
//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”
// gtest_main.cpp #include <stdio.h> #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(); }
步骤 4:设置运行环境
1. 项目 unit_test-> 属性 -> C++ 链接器 -> 库 -> 库(-I) -> 输入“pthread”并单击“确定”
2. 文件夹 test-> 属性 -> C/C++ 构建 -> 设置 -> Cross G++ Compiler -> includes -> 包含路径 (-I)
然后单击“添加..” -> “workspace..”,将文件夹“include”和“gtest_src”添加到路径。
3. 文件夹 gtest_src-> 属性 -> C/C++ 构建 -> 设置 -> Cross G++ Compiler -> includes -> 包含路径 (-I)。 然后单击“添加..” -> “workspace..”,将文件夹“gtest_src”添加到路径。
完成此操作后,我们已经设置了运行环境,可以开始单元测试了。
步骤 5:运行 Google Test。
1. 在 Eclipse 中,转到“项目”->“全部构建”或 ctrl+B 以构建项目。
2. 转到“运行”->“运行”或 ctrl+F11 以运行可执行文件。
或者,我们可以转到终端,转到 Debug 文件夹并运行可执行文件 unit_test。
输出如下所示。
历史
1.0 版本,2014 年 8 月 26 日。
1.1 版本,2014 年 9 月 9 日。 更改导入 gtest 库的方法