通俗、举例讲解怎样学习和入门google的gtest?用gtest 做测试用例?

学习和入门 Google 的 GTest(Google Test)是一项有益的技能,尤其适用于进行 C++ 程序的自动化测试。以下是一步步入门和使用 GTest 的过程,包括通俗解释和具体示例:

### 1. 安装 GTest

首先,你需要在你的计算机上安装 GTest。如果你使用的是 Ubuntu 系统,可以通过以下命令安装:

```bash
sudo apt-get install libgtest-dev
sudo apt-get install cmake # 如果你还没有安装 cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp *.a /usr/lib
```

如果你是 Windows 用户,可以从 GitHub 下载 GTest 的源码,然后使用 CMake 构建并安装。

### 2. 创建一个基本的测试用例

创建一个简单的 C++ 程序,比如一个计算整数加法的函数,然后编写测试用例。首先是你的 C++ 函数(在 `math_functions.cpp` 和 `math_functions.h` 文件中):

**math_functions.h**
```cpp
#ifndef MATH_FUNCTIONS_H
#define MATH_FUNCTIONS_H

int add(int a, int b);

#endif
```

**math_functions.cpp**
```cpp
#include "math_functions.h"

int add(int a, int b) {
    return a + b;
}
```

接下来,创建一个测试文件 `test.cpp`,使用 GTest 来测试 `add` 函数:

**test.cpp**
```cpp
#include "math_functions.h"
#include <gtest/gtest.h>

TEST(MathTest, TestAdd) {
    EXPECT_EQ(3, add(1, 2));
    EXPECT_EQ(5, add(2, 3));
    EXPECT_EQ(7, add(3, 4));
}

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
```

### 3. 编译和运行测试

为了编译和运行你的测试,你需要编写一个 `CMakeLists.txt` 文件,这个文件会告诉 CMake 如何构建你的项目:

**CMakeLists.txt**
```cmake
cmake_minimum_required(VERSION 3.10)
project(MyMathTest)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)

# 寻找 GTest 库
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

# 添加你的源文件和头文件
add_executable(runTests test.cpp math_functions.cpp)
target_link_libraries(runTests ${GTEST_LIBRARIES} pthread)
```

在终端中,运行以下命令来构建和运行测试:
```bash
cmake .
make
./runTests
```

### 4. 查看测试结果

执行测试后,你将在命令行看到每个测试用例的结果,显示它们是否通过。

通过上述步骤,你可以开始使用 GTest 来为你的 C++ 代码编写和执行自动化测试。随着经验的积累,你可以探索更高级的测试功能,如模拟对象、测试固件和参数化测试。

相关推荐

  1. 【C++】Google Test(gtest)单元测试

    2024-04-24 12:14:04       26 阅读
  2. 软件测试:C++ Google Test单元测试框架GTest

    2024-04-24 12:14:04       43 阅读
  3. gtest 单元测试

    2024-04-24 12:14:04       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-24 12:14:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-24 12:14:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-24 12:14:04       82 阅读
  4. Python语言-面向对象

    2024-04-24 12:14:04       91 阅读

热门阅读

  1. C++中的抽象类

    2024-04-24 12:14:04       34 阅读
  2. draw.io使用心得

    2024-04-24 12:14:04       35 阅读
  3. draw.io使用心得

    2024-04-24 12:14:04       35 阅读
  4. Hibernate6根据xml获取ddl sql语句

    2024-04-24 12:14:04       32 阅读
  5. Node.js 环境变量动态获取和静态获取的区别

    2024-04-24 12:14:04       30 阅读
  6. go实现异常捕捉

    2024-04-24 12:14:04       36 阅读
  7. 详细解读DreamFusion

    2024-04-24 12:14:04       31 阅读
  8. 使用 torchtune 微调 Llama3

    2024-04-24 12:14:04       31 阅读