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

打印 上一主题 下一主题

主题 1992|帖子 1992|积分 5976

1. 安装 Boost.Test

Boost.Test 是 Boost C++ 库的一部门,因此需要安装完备的 Boost 库。
方法 1:使用包管理器安装(保举)

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

也可以通过下令来安装:
  1. git clone https://github.com/microsoft/vcpkg.git
  2. cd vcpkg
  3. bootstrap-vcpkg.bat
  4. vcpkg install boost-test
复制代码
macOS(Homebrew)
  1. brew install boost
复制代码
Linux(APT)
  1. sudo apt install libboost-test-dev
复制代码
方法 2:手动下载 Boost 并编译


  • 从 Boost 官网 下载源码。
  • 解压并编译 Boost:
    1. ./bootstrap.sh
    2. ./b2
    复制代码

2. 创建 CLion 项目


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

3. 配置 CMakeLists.txt

在 CMakeLists.txt 中添加 Boost.Test 配置:
  1. cmake_minimum_required(VERSION 3.30)
  2. project(MyTest)
  3. set(CMAKE_CXX_STANDARD 20)
  4. # 查找 Boost 库
  5. find_package(Boost REQUIRED COMPONENTS unit_test_framework)
  6. include_directories(${Boost_INCLUDE_DIRS})
  7. # 添加测试文件
  8. add_executable(MyTest main.cpp)
  9. # 链接 Boost.Test 库
  10. target_link_libraries(MyTest Boost::unit_test_framework)
  11. # 启用测试
  12. enable_testing()
复制代码
如果 Boost 安装在非默认路径(如 vcpkg),需要指定 CMAKE_PREFIX_PATH:
  1. set(CMAKE_PREFIX_PATH "C:/path/to/vcpkg/installed/x64-windows")
复制代码

4. 编写 Boost.Test 测试代码

方法 1:主动管理 main()


  1. #define BOOST_TEST_MODULE MyTest
  2. #include <boost/test/included/unit_test.hpp>
  3. int Add(int nA, int nB) {
  4.     return nA + nB;
  5. }
  6. BOOST_AUTO_TEST_CASE(AdditionTest) {
  7.     BOOST_CHECK_EQUAL(Add(2, 3), 5);
  8.     BOOST_CHECK_EQUAL(Add(-2, -3), -5);
  9. }
复制代码
方法 2:手动定义 main()

  1. #define BOOST_TEST_DYN_LINK
  2. #include <boost/test/unit_test.hpp>
  3. int Add(int nA, int nB) {
  4.     return nA + nB;
  5. }
  6. BOOST_AUTO_TEST_CASE(AdditionTest) {
  7.     BOOST_CHECK_EQUAL(Add(2, 3), 5);
  8.     BOOST_CHECK_EQUAL(Add(-2, -3), -5);
  9. }
  10. boost::unit_test::test_suite* init_unit_test_suite(int, char* []) {
  11.     return nullptr;
  12. }
复制代码

5. 运行 Boost.Test

方法 1:手动运行

  1. cmake --build .
  2. ./my_test
复制代码
方法 2:CLion 直接运行

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


6. 处理 Boost.Test 断言

断言类型语法根本断言BOOST_CHECK_EQUAL(a, b);浮点数比较BOOST_CHECK_CLOSE(a, b, 0.01);非常检测BOOST_CHECK_THROW(foo(), ExceptionType);
  1. BOOST_AUTO_TEST_CASE(TestAssertions) {
  2.     BOOST_CHECK_EQUAL(1 + 1, 2);
  3.     BOOST_CHECK_CLOSE(3.14, 3.1401, 0.01);
  4.     BOOST_CHECK_THROW(throw std::runtime_error("error"), std::runtime_error);
  5. }
复制代码

7. 使用 Boost.Test Fixtures

  1. struct MyFixture {
  2.     MyFixture() { nValue = 5; }
  3.     int nValue;
  4. };
  5. BOOST_FIXTURE_TEST_CASE(FixtureTest, MyFixture) {
  6.     BOOST_CHECK_EQUAL(nValue + 5, 10);
  7. }
复制代码

8. 解决可能碰到的问题

找不到 Boost.Test

如果 CMake 找不到 Boost,请确保 CMAKE_PREFIX_PATH 正确设置:
  1. set(CMAKE_PREFIX_PATH "C:/path/to/vcpkg/installed/x64-windows")
复制代码
链接错误

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


  • 在 CMakeLists.txt 确保:
  1. target_link_libraries(my_test Boost::unit_test_framework)
复制代码


  • Windows 下,Boost 可能需要动态链接:
  1. #define BOOST_TEST_DYN_LINK
复制代码

9. 总结

步调分析安装 Boost.Testvcpkg、brew 或 apt创建 CLion 项目New Project配置 CMakeLists.txtfind_package(Boost REQUIRED COMPONENTS unit_test_framework)编写测试代码BOOST_AUTO_TEST_CASE()运行测试CLion 直接运行 或 ./my_test 如许,就可以在 CLion + Boost.Test 情况下进行 C++ 单元测试 了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表