C++ 单元测试框架:Google Test

安装 

ubuntu 系统如下,其他系统需要根据实际情况安装,或源码安装

sudo apt update
sudo apt install libgtest-dev

示例

需要被测试的文件

// calculator.h
#ifndef CALCULATOR_H
#define CALCULATOR_H

class Calculator {
public:
    int add(int a, int b);
    int subtract(int a, int b);
};

#endif // CALCULATOR_H
// calculator.cpp
#include "calculator.h"

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

int Calculator::subtract(int a, int b) {
    return a - b;
}

编写测试文件:

// test_calculator.cpp
#include "calculator.h"
#include "gtest/gtest.h"

// 定义测试集合
class CalculatorTest : public ::testing::Test {
protected:
    Calculator calc;  // 实例化Calculator对象
};

// 测试加法
TEST_F(CalculatorTest, Add) {
    EXPECT_EQ(calc.add(1, 2), 3);
    EXPECT_EQ(calc.add(-1, 1), 0);
    EXPECT_EQ(calc.add(-1, -1), -2);
}

// 测试减法
TEST_F(CalculatorTest, Subtract) {
    EXPECT_EQ(calc.subtract(10, 5), 5);
    EXPECT_EQ(calc.subtract(3, 5), -2);
    EXPECT_EQ(calc.subtract(-1, -1), 0);
}

编写cmake

cmake_minimum_required(VERSION 3.10)
project(CalculatorTest)

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

# 查找Google Test库
find_package(GTest REQUIRED)

# 添加Calculator类
add_library(calculator STATIC calculator.cpp)

# 添加测试
add_executable(test_calculator test_calculator.cpp)

# 链接Google Test库
target_link_libraries(test_calculator PRIVATE GTest::GTest GTest::Main calculator)

# 设置编译选项
set_target_properties(test_calculator PROPERTIES CXX_STANDARD 11)

# 设置测试运行器
enable_testing()
add_test(NAME RunTests COMMAND test_calculator)

打开终端进入目录,依次运行

mkdir build
cd build
cmake ..
make
ctest

ctest是一个常用的命令行工具,用于执行由CTest管理的测试。CTest是CMake的一部分,它提供了构建自动化测试套件的能力,包括发现、调度和运行测试。

当你在CMake项目中启用了测试(通过enable_testing()),并添加了测试可执行文件(使用add_test命令),CTest就会负责管理和执行这些测试。当你运行ctest命令时,它会:

  1. 查找所有被标记为测试的目标。
  2. 执行每个测试目标,并收集结果。
  3. 报告每个测试的状态(通过、失败或错误)。
  4. 提供汇总信息,例如测试总数、通过数、失败数等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值