65.9K
CodeProject 正在变化。 阅读更多。
Home

C++ 单元测试入门指南,如何在 Eclipse 中设置 Google Test (gtest)?

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.52/5 (10投票s)

2014年8月27日

CPOL

3分钟阅读

viewsIcon

111936

在 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 库的方法

© . All rights reserved.