任何时候,当人们考虑使用像 Boost 库这样大型且复杂的库时,他必须有一种方法来验证库函数在其环境中的有效性。这应该在库安装时完成,并在任何时候对其适用性和/或其用法提出疑问时进行。
这里描述的步骤允许用户对库运行任何测试组合,并生成一组方便的表格,显示在什么条件下运行了哪些测试。
生成这些表格需要几个实用程序:b2
用于运行测试本身,以及 library_status
用于处理测试并构建表格。要构建 b2
,请查阅 Boost Build 的文档。要构建 library_status
,请移动到目录 regression-root/build
并调用 b2
。如果一切顺利,library_status
可执行文件可以在 regression-root/stage/bin/library_status
找到。
library_status
。应该会出现一个类似于以下正则表达式库的表格。
测试名称 | msvc-7.1 | |||
调试 | 发布 | |||
静态链接 | 多线程 | 静态链接 | 多线程 | |
多线程 | 多线程 | |||
bad_expression_test | 缺失 | 警告 | 缺失 | 警告 |
捕获 | 缺失 | 失败 | 缺失 | 失败 |
captures_test | 缺失 | 警告 | 缺失 | 警告 |
概念检查 | 缺失 | 通过 | 缺失 | 通过 |
icu_concept_check | 缺失 | 通过 | 缺失 | 通过 |
object_cache_test | 缺失 | 警告 | 缺失 | 警告 |
posix_api_check | 缺失 | 警告 | 缺失 | 警告 |
posix_api_check_cpp | 缺失 | 通过 | 缺失 | 通过 |
recursion_test | 缺失 | 警告 | 缺失 | 警告 |
regex_config_info | 缺失 | 通过 | 缺失 | 通过 |
regex_dll_config_info | 缺失 | 通过 | 缺失 | 通过 |
regex_regress | 通过* | 缺失 | 通过* | 缺失 |
regex_regress_dll | 缺失 | 通过* | 缺失 | 通过* |
regex_regress_threaded | 缺失 | 通过 | 缺失 | 通过 |
static_mutex_test | 缺失 | 通过 | 缺失 | 通过 |
test_collate_info | 缺失 | 警告 | 缺失 | 警告 |
unicode_iterator_test | 缺失 | 警告 | 缺失 | 警告 |
wide_posix_api_check_c | 缺失 | 警告 | 缺失 | 警告 |
wide_posix_api_check_cpp | 缺失 | 警告 | 缺失 | 警告 |
此表是通过调用以下命令行生成的
regression-root/stage/bin/library_status --b2 b2 --boost-root=../../.. toolset=msvc-7.1 variant=debug,release
从 boost-root/libs/regex/test 目录内。
此表显示了库的调试和发布版本的正则表达式测试结果。它还显示了其中一个测试是专门使用运行时库的静态链接/多线程版本运行的事实。“缺失”单元格对应于由于某种原因未运行的测试。这通常是因为相应的 Jamfile.v2
为给定的编译器和构建属性组合排除了此测试。在此示例中,所有测试都使用相同的编译器运行。如果使用了其他编译器,它们将作为表格中的更多列出现。
上面的表格只是一个说明,因此链接实际上不指向任何内容。在您生成的表格中,链接将显示一个页面,描述有关测试的任何错误、警告或其他可用信息。如果测试通过,通常没有其他信息,因此没有链接。
表格是累积的。也就是说,如果您现在运行一组测试,稍后运行具有不同属性的测试,则表格将包含迄今为止的所有结果。测试结果存储在 ../bin.v2/libs/test/<library>/...
中。要将测试结果重新初始化为空,请删除此目录中的相应文件。
上述步骤假设表格在目录 ../libs/<library>/test
中生成。这是最常见的情况,因为此目录包含 Jamfile.v2
以及官方 Boost 测试人员使用的源代码。但是,这只是一种约定。表格可以在库中的其他目录中生成。一种可能性是为 ../libs/<library>/example
中的所有示例生成表格。或者,可能有一个特殊的性能测试目录,这些测试需要很长时间才能运行,因此不适合由官方 Boost 测试人员运行。请记住,库状态表是在调用 library_test
命令的目录中生成的。
版权所有 2011 Bryce Lelbach。
版权所有 2007-2011 Robert Ramey。
版权所有 2015 Rene Rivera。
根据 Boost 软件许可协议 1.0 版本分发。(请参阅随附文件 LICENSE_1_0.txt 或 https://boost.ac.cn/LICENSE_1_0.txt)