当前位置: 首页 > article >正文

在 CLion 中使用 Boost.Test 进行 C++ 单元测试

1. 安装 Boost.Test

Boost.Test 是 Boost C++ 库的一部分,因此需要安装完整的 Boost 库。

方法 1:使用包管理器安装(推荐)

Windows(vcpkg)

直接使用 CLion 集成的 vcpkg安装 boost-test:

安装 boost-test

也可以通过命令来安装:

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
bootstrap-vcpkg.bat
vcpkg install boost-test

macOS(Homebrew)

brew install boost

Linux(APT)

sudo apt install libboost-test-dev

方法 2:手动下载 Boost 并编译

  1. 从 Boost 官网 下载源码。

  2. 解压并编译 Boost:

    ./bootstrap.sh
    ./b2
    

2. 创建 CLion 项目

  1. 打开 CLion,选择 New Project
  2. 选择 C++ Executable,然后点击 Create 创建一个项目。

3. 配置 CMakeLists.txt

CMakeLists.txt 中添加 Boost.Test 配置:

cmake_minimum_required(VERSION 3.30)
project(MyTest)

set(CMAKE_CXX_STANDARD 20)

# 查找 Boost 库
find_package(Boost REQUIRED COMPONENTS unit_test_framework)
include_directories(${Boost_INCLUDE_DIRS})

# 添加测试文件
add_executable(MyTest main.cpp)

# 链接 Boost.Test 库
target_link_libraries(MyTest Boost::unit_test_framework)

# 启用测试
enable_testing()

如果 Boost 安装在非默认路径(如 vcpkg),需要指定 CMAKE_PREFIX_PATH

set(CMAKE_PREFIX_PATH "C:/path/to/vcpkg/installed/x64-windows")

4. 编写 Boost.Test 测试代码

方法 1:自动管理 main()

测试代码

#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>

int Add(int nA, int nB) {
    return nA + nB;
}

BOOST_AUTO_TEST_CASE(AdditionTest) {
    BOOST_CHECK_EQUAL(Add(2, 3), 5);
    BOOST_CHECK_EQUAL(Add(-2, -3), -5);
}

方法 2:手动定义 main()

#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

int Add(int nA, int nB) {
    return nA + nB;
}

BOOST_AUTO_TEST_CASE(AdditionTest) {
    BOOST_CHECK_EQUAL(Add(2, 3), 5);
    BOOST_CHECK_EQUAL(Add(-2, -3), -5);
}

boost::unit_test::test_suite* init_unit_test_suite(int, char* []) {
    return nullptr;
}

5. 运行 Boost.Test

方法 1:手动运行

cmake --build .
./my_test

方法 2:CLion 直接运行

不需要额外的配置,可以直接运行:

配置单元测试


6. 处理 Boost.Test 断言

断言类型语法
基本断言BOOST_CHECK_EQUAL(a, b);
浮点数比较BOOST_CHECK_CLOSE(a, b, 0.01);
异常检测BOOST_CHECK_THROW(foo(), ExceptionType);
BOOST_AUTO_TEST_CASE(TestAssertions) {
    BOOST_CHECK_EQUAL(1 + 1, 2);
    BOOST_CHECK_CLOSE(3.14, 3.1401, 0.01);
    BOOST_CHECK_THROW(throw std::runtime_error("error"), std::runtime_error);
}

7. 使用 Boost.Test Fixtures

struct MyFixture {
    MyFixture() { nValue = 5; }
    int nValue;
};

BOOST_FIXTURE_TEST_CASE(FixtureTest, MyFixture) {
    BOOST_CHECK_EQUAL(nValue + 5, 10);
}

8. 解决可能遇到的问题

找不到 Boost.Test

如果 CMake 找不到 Boost,请确保 CMAKE_PREFIX_PATH 正确设置:

set(CMAKE_PREFIX_PATH "C:/path/to/vcpkg/installed/x64-windows")

链接错误

如果遇到 undefined reference to ‘boost::unit_test::framework’:

  • 在 CMakeLists.txt 确保:
target_link_libraries(my_test Boost::unit_test_framework)
  • Windows 下,Boost 可能需要动态链接:
#define BOOST_TEST_DYN_LINK

9. 总结

步骤说明
安装 Boost.Testvcpkgbrewapt
创建 CLion 项目New Project
配置 CMakeLists.txtfind_package(Boost REQUIRED COMPONENTS unit_test_framework)
编写测试代码BOOST_AUTO_TEST_CASE()
运行测试CLion 直接运行 或 ./my_test

这样,就可以在 CLion + Boost.Test 环境下进行 C++ 单元测试 了!🚀


http://www.kler.cn/a/577810.html

相关文章:

  • CentOS 7 aarch64上制作kernel rpm二进制包 —— 筑梦之路
  • 基于java社交网络安全的知识图谱的构建与实现
  • 谈谈常用的分布式 ID 设计方案
  • GPU/CUDA 发展编年史:从 3D 渲染到 AI 大模型时代(上)
  • javascript字符串截取有哪些
  • 从零开始学机器学习——逻辑回归
  • 对ArrayList中存储的TreeNode的排序回顾
  • 设计一个SVF下载器之一:整体思路
  • pytorch常用参数初始化
  • es优化方面
  • LeetCode1137 第N个泰波那契数
  • C++入门——函数重载
  • linux 命令sed
  • QT中使用C++调用 python脚本
  • 驱动开发系列45 - Linux 显卡KMD驱动代码分析(六)- 显卡驱动与OS接口
  • 小迪安全-27-php开发,tp框架,路由访问,对象操作,内置过滤,核心漏洞
  • 2.2.1 网络原理-posix api
  • #9 【code】实现扩散模型的一个jupyter notebook
  • PX4中的DroneCAN的实现库Libuavcan及基础功能示例
  • 【Hadoop】什么是Zookeeper?如何理解Zookeeper?