Boost.Test
Boost 单元测试框架 (Boost.Test) 是 Boost 库的一部分。 这是一个功能全面且可扩展的框架,具有多种断言宏、XML 输出和其他功能。 Boost.Test 本身缺乏模拟功能,但可以与独立的模拟框架(如 gmock )结合使用。
Boost.Test 基础
如果您不熟悉 Boost.Test,您可以在下方找到其主要概念的描述:
检查器
对于大多数 Boost.Test 检查器,您可以设置严重性级别:
警告 如果检查失败,会生成一条警告消息,但错误计数器不会增加,测试用例会继续。
检查 如果检查失败,会报告一个错误并增加错误计数器,但测试用例会继续。
要求 用于报告致命错误,当测试用例的执行应中止时(例如,检查稍后将使用的对象是否成功创建)。
因此,Boost 检查器通常是一个 BOOST_[level]_[checkname] 格式的宏,接受一个或多个参数。 基本宏是 BOOST_WARN、 BOOST_CHECK 和 BOOST_REQUIRE。 它们接受一个表达式参数进行检查,例如:
以下是其他检查器的一些示例:
通用比较 |
如果失败,这些宏不仅会给出 测试失败 消息,还会显示预期值和实际值:
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 测试组织起来,使用一对 BOOST_AUTO_TEST_SUITE(suite_name) 和 BOOST_AUTO_TEST_SUITE_END() 宏。 一个简单的测试套件如下所示:
夹具
要使用 Boost 编写夹具,您可以使用在夹具类声明之后编写的 常规 BOOST_AUTO_TEST_CASE 宏 或特殊的 BOOST_FIXTURE_TEST_CASE 宏:
将 Boost.Test 添加到您的项目中
您可以为框架选择三种 使用变体 :仅头文件、静态库或共享库。 选择最合适的选项时,请记住,作为仅头文件使用的 Boost.Test 可能需要显著的编译时间。
接下来,我们将重点关注 共享库变体。
按照这些 说明 安装和构建 Boost 测试框架。
请注意,CLion 支持 Boost.Test 1.55 及更高版本。
在项目根目录下为 Boost 测试创建一个文件夹。 例如,我们将其命名为 Boost_tests 。
在 Boost_tests 文件夹中创建一个 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 使用一个 实时模板 ,然后调整模板代码以模仿上述代码片段。
在您的 root CMakeLists.txt 脚本中,将
add_subdirectory(Boost_tests)命令添加到末尾,然后重新加载项目。在您的测试源文件中,添加以下行:
#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 脚本的时间: boost 和 boost_with_libs。 您可以在 中找到它们的描述和设置。
要插入模板,请按 Ctrl+J 或在 CMakeLists.txt 中调用 。 从选项列表中选择,例如:

或者,您可以开始输入缩写,然后按 Tab 插入存根代码。
Boost.Test 运行/调试配置
尽管 Boost.Test 为您的测试程序提供了 main() 条目,并且您可以将其作为常规应用程序运行,但我们建议使用专用的 Boost.Test 运行/调试配置。 它包括与测试相关的设置,并让您受益于内置的 测试运行器 ,如果您像常规程序一样运行测试,则无法使用该功能。
要创建 Boost.Test 配置,请转到主菜单中的 运行 | 编辑配置 ,点击
并从模板列表中选择 Boost.Test。
指定要包含在配置中的测试或套件,或提供用于过滤测试名称的模式。 字段中提供了自动完成功能,可帮助您快速填写它们:

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

在配置设置的其他字段中,您可以设置环境变量和命令行参数。
对于 Boost.Test 1.62 或更早版本,如果您收到 测试框架意外退出 消息,请在 程序参数 中设置以下字符串:
--log_format=HRF --log_level=all保存配置后,它已准备好用于 运行
或 调试
。
运行测试
在 CLion 中,有 几种方式 启动测试的运行/调试会话,其中之一是使用特殊的边栏图标。 这些图标有助于快速运行或调试单个测试或整个套件/测试夹具:

边栏图标还显示测试结果(如果已可用):成功 或失败
。
当您使用边栏图标运行测试/套件/夹具时,CLion 会创建一个 临时 Boost.Test 配置,该配置在配置列表中显示为灰色。 要保存临时配置,请在 对话框中选择它并按 :

探索结果
当您运行测试时,CLion 会在内置的 测试运行器窗口 中显示结果和过程。 测试树在测试逐一执行时显示所有测试。 测试运行器窗口包括:
带有已执行测试百分比的 进度条,
显示所有正在运行测试的状态和持续时间的 树视图,
测试的 输出 流,
工具栏 ,提供重新运行失败的
测试、导出
或打开自动保存的先前结果
的选项,按字母顺序排序测试
以便轻松找到特定测试,或按持续时间排序
以了解哪个测试运行时间比其他测试更长。
