Boost.Test 是 Boost C++ 库的一部分,因此需要安装完整的 Boost 库。
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
从 Boost 官网 下载源码。
解压并编译 Boost:
./bootstrap.sh
./b2
New Project
。C++ Executable
,然后点击 Create
创建一个项目。在 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")
main()
#define BOOST_TEST_MODULE MyTest
#include
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);
}
main()
#define BOOST_TEST_DYN_LINK
#include
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;
}
cmake --build .
./my_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);
}
struct MyFixture {
MyFixture() { nValue = 5; }
int nValue;
};
BOOST_FIXTURE_TEST_CASE(FixtureTest, MyFixture) {
BOOST_CHECK_EQUAL(nValue + 5, 10);
}
如果 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)
#define BOOST_TEST_DYN_LINK
步骤 | 说明 |
---|---|
安装 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++ 单元测试 了!