CLion 2025.2 Help

Boost.Test

Boost 单元测试框架 (Boost.Test)Boost 库的一部分。 这是一个功能全面且可扩展的框架,具有多种断言宏、XML 输出和其他功能。 Boost.Test 本身缺乏模拟功能,但可以与独立的模拟框架(如 gmock )结合使用。

Boost.Test 基础

如果您不熟悉 Boost.Test,您可以在下方找到其主要概念的描述:

检查器

对于大多数 Boost.Test 检查器,您可以设置严重性级别:

  • 警告 如果检查失败,会生成一条警告消息,但错误计数器不会增加,测试用例会继续。

  • 检查 如果检查失败,会报告一个错误并增加错误计数器,但测试用例会继续。

  • 要求 用于报告致命错误,当测试用例的执行应中止时(例如,检查稍后将使用的对象是否成功创建)。

因此,Boost 检查器通常是一个 BOOST_[level]_[checkname] 格式的宏,接受一个或多个参数。 基本宏是 BOOST_WARNBOOST_CHECKBOOST_REQUIRE。 它们接受一个表达式参数进行检查,例如:

BOOST_WARN(sizeof(int) == sizeof(long)); BOOST_CHECK( i == 1 ); BOOST_REQUIRE( j > 5 );

以下是其他检查器的一些示例:

通用比较

BOOST_[level]_EQUALBOOST_[level]_NEBOOST_[level]_GT

如果失败,这些宏不仅会给出 测试失败 消息,还会显示预期值和实际值:

int i = 2; int j = 1; BOOST_CHECK( i == j ); // reports the fact of failure only: "check i == j failed" BOOST_CHECK_EQUAL( i, j ); // reports "check i == j failed [2 != 1]"

浮点比较

BOOST_[level]_CLOSEBOOST_[level]_CLOSE_FRACTIONBOOST_[level]_SMALL

异常检查

BOOST_[level]_THROWBOOST_[level]_NO_THROWBOOST_[level]_EXCEPTION

套件

您可以使用 套件 将 Boost 测试组织起来,使用一对 BOOST_AUTO_TEST_SUITE(suite_name)BOOST_AUTO_TEST_SUITE_END() 宏。 一个简单的测试套件如下所示:

#define BOOST_TEST_MODULE Suite_example #include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_SUITE(TwoTwoFour_suite) BOOST_AUTO_TEST_CASE(testPlus) { BOOST_CHECK_EQUAL(2+2, 4); } BOOST_AUTO_TEST_CASE(testMult) { BOOST_CHECK_EQUAL(2*2, 4); } BOOST_AUTO_TEST_SUITE_END()

夹具

要使用 Boost 编写夹具,您可以使用在夹具类声明之后编写的 常规 BOOST_AUTO_TEST_CASE 宏 或特殊的 BOOST_FIXTURE_TEST_CASE 宏:

struct SampleF { SampleF() : i(1) { } ~SampleF() { } int i; }; BOOST_FIXTURE_TEST_CASE(SampleF_test, SampleF) { // accessing i from SampleF directly BOOST_CHECK_EQUAL(i, 1); BOOST_CHECK_EQUAL(i, 2); BOOST_CHECK_EQUAL(i, 3); }

将 Boost.Test 添加到您的项目中

您可以为框架选择三种 使用变体 :仅头文件、静态库或共享库。 选择最合适的选项时,请记住,作为仅头文件使用的 Boost.Test 可能需要显著的编译时间。

接下来,我们将重点关注 共享库变体

  1. 按照这些 说明 安装和构建 Boost 测试框架。

    请注意,CLion 支持 Boost.Test 1.55 及更高版本。

  2. 在项目根目录下为 Boost 测试创建一个文件夹。 例如,我们将其命名为 Boost_tests

  3. Boost_tests 文件夹中创建一个 CMakeLists.txt 文件:在项目树中右键点击它并选择 新建 | CMakeLists.txt

    自定义以下行并将其添加到您的脚本中:

    set (Boost_USE_STATIC_LIBS OFF) find_package (Boost REQUIRED COMPONENTS unit_test_framework) include_directories (${Boost_INCLUDE_DIRS}) # 'Boost_Tests_run' is the target name # 'test1.cpp test2.cpp' are source files with tests add_executable (Boost_Tests_run test1.cpp test2.cpp) target_link_libraries (Boost_Tests_run ${Boost_LIBRARIES})

    您还可以为 boost_with_libs 使用一个 实时模板 ,然后调整模板代码以模仿上述代码片段。

  4. 在您的 root CMakeLists.txt 脚本中,将 add_subdirectory(Boost_tests) 命令添加到末尾,然后重新加载项目。

  5. 在您的测试源文件中,添加以下行:

    #define BOOST_TEST_DYN_LINK #define BOOST_TEST_MAIN // in only one cpp file #include <boost/test/unit_test.hpp>

Boost.Test 的实时模板

有两个预定义的 实时模板 可帮助您节省编辑带有 Boost.Test 的 CMake 脚本的时间: boostboost_with_libs。 您可以在 设置 | 编辑器 | 代码模板 | CMake 中找到它们的描述和设置。

要插入模板,请按 Ctrl+J 或在 CMakeLists.txt 中调用 代码 | 插入实时模板。 从选项列表中选择,例如:

Boost 实时模板

或者,您可以开始输入缩写,然后按 Tab 插入存根代码。

Boost.Test 运行/调试配置

尽管 Boost.Test 为您的测试程序提供了 main() 条目,并且您可以将其作为常规应用程序运行,但我们建议使用专用的 Boost.Test 运行/调试配置。 它包括与测试相关的设置,并让您受益于内置的 测试运行器 ,如果您像常规程序一样运行测试,则无法使用该功能。

  1. 要创建 Boost.Test 配置,请转到主菜单中的 运行 | 编辑配置 ,点击 并从模板列表中选择 Boost.Test

  2. 指定要包含在配置中的测试或套件,或提供用于过滤测试名称的模式。 字段中提供了自动完成功能,可帮助您快速填写它们:

    配置字段中的自动完成

    设置通配符以指定测试模式,例如:

    测试模式
  3. 在配置设置的其他字段中,您可以设置环境变量和命令行参数。

    对于 Boost.Test 1.62 或更早版本,如果您收到 测试框架意外退出 消息,请在 程序参数 中设置以下字符串:

    --log_format=HRF --log_level=all
  4. 保存配置后,它已准备好用于 运行 调试

运行测试

在 CLion 中,有 几种方式 启动测试的运行/调试会话,其中之一是使用特殊的边栏图标。 这些图标有助于快速运行或调试单个测试或整个套件/测试夹具:

测试的侧边栏图标

边栏图标还显示测试结果(如果已可用):成功 或失败

当您使用边栏图标运行测试/套件/夹具时,CLion 会创建一个 临时 Boost.Test 配置,该配置在配置列表中显示为灰色。 要保存临时配置,请在 编辑配置 对话框中选择它并按

保存临时测试配置

探索结果

当您运行测试时,CLion 会在内置的 测试运行器窗口 中显示结果和过程。 测试树在测试逐一执行时显示所有测试。 测试运行器窗口包括:

  • 带有已执行测试百分比的 进度条

  • 显示所有正在运行测试的状态和持续时间的 树视图

  • 测试的 输出 流,

  • 工具栏 ,提供重新运行失败的 测试、导出 或打开自动保存的先前结果 的选项,按字母顺序排序测试 以便轻松找到特定测试,或按持续时间排序 以了解哪个测试运行时间比其他测试更长。

测试运行器
最后修改日期: 2025年 9月 26日