1. 安装 Boost.Test
Boost.Test 是 Boost C++ 库的一部门,因此需要安装完备的 Boost 库。
方法 1:使用包管理器安装(保举)
Windows(vcpkg)
直接使用 CLion 集成的 vcpkg安装 boost-test:
也可以通过下令来安装:
- git clone https://github.com/microsoft/vcpkg.git
- cd vcpkg
- bootstrap-vcpkg.bat
- vcpkg install boost-test
复制代码 macOS(Homebrew)
Linux(APT)
- sudo apt install libboost-test-dev
复制代码 方法 2:手动下载 Boost 并编译
- 从 Boost 官网 下载源码。
- 解压并编译 Boost:
2. 创建 CLion 项目
- 打开 CLion,选择 New Project。
- 选择 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:手动运行
方法 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’:
- target_link_libraries(my_test Boost::unit_test_framework)
复制代码
- Windows 下,Boost 可能需要动态链接:
- #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++ 单元测试 了! |