任何时候,如果考虑使用像 Boost 库这样庞大而复杂的库,都必须有一种方法来验证库函数在其环境中的运行情况。这应该在安装库时以及任何时候对库的适用性和/或使用方法产生疑问时进行。
此处描述的步骤允许用户对库运行任意组合的测试,并生成一组方便的表格,显示在什么条件下运行哪些测试。
生成这些表格需要几个实用程序:b2
用于运行测试本身,以及library_status
用于处理测试并构建表格。要构建b2
,请参阅 Boost Build 的文档。要构建library_status
,请移动到目录 regression-root/build
并调用b2
。如果一切顺利,则可以在 regression-root/stage/bin/library_status
找到library_status
可执行文件。
library_status
。对于 regex 库,应该会出现类似于以下的表格。
测试名称 | msvc-7.1 | |||
调试 | 发布 | |||
静态链接 | 多线程 | 静态链接 | 多线程 | |
多线程 | 多线程 | |||
bad_expression_test | 缺失 | 警告 | 缺失 | 警告 |
captures | 缺失 | 失败 | 缺失 | 失败 |
captures_test | 缺失 | 警告 | 缺失 | 警告 |
concept_check | 缺失 | 通过 | 缺失 | 通过 |
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 目录内。
此表显示了库的调试版和发布版的 regex 测试结果。它还显示其中一项测试是专门使用运行时库的静态链接/多线程版本运行的。标记为“缺失”的单元格对应于由于某种原因未运行的测试。这通常是因为相应的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)