IT评测·应用市场-qidao123.com技术社区
标题:
在 CLion 中使用 Boost.Test 进行 C++ 单元测试
[打印本页]
作者:
三尺非寒
时间:
2025-3-7 08:11
标题:
在 CLion 中使用 Boost.Test 进行 C++ 单元测试
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)
brew install boost
复制代码
Linux(APT)
sudo apt install libboost-test-dev
复制代码
方法 2:手动下载 Boost 并编译
从 Boost 官网 下载源码。
解压并编译 Boost:
./bootstrap.sh
./b2
复制代码
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:手动运行
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.Test
vcpkg、brew 或 apt
创建 CLion 项目
New Project
配置 CMakeLists.txt
find_package(Boost REQUIRED COMPONENTS unit_test_framework)
编写测试代码
BOOST_AUTO_TEST_CASE()
运行测试
CLion 直接运行 或 ./my_test 如许,就可以在
CLion + Boost.Test
情况下进行
C++ 单元测试
了!
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/)
Powered by Discuz! X3.4