首页 > 解决方案 > 如何进行执行所有 Boost 单元测试的测试

问题描述

假设我有几个带有 Boost 单元测试的文件:test1.cc、test2.cc ... ...

每个都有:

BOOST_AUTO_TEST_SUITE (test1)
    BOOST_AUTO_TEST_CASE(test_something)
    ...
    BOOST_AUTO_TEST_CASE(test_something_else)
BOOST_AUTO_TEST_SUITE_END ()

然后我的 CMake 为每个 cc 文件创建一个可执行文件,我可以为测试执行生成的二进制文件。

有没有办法创建另一个名为 execute_all_tests.cc 的文件,该文件包含所有其他 test*.cc 并调用它们,以便该程序的二进制文件可以一次执行所有这些文件?

我见过这个:https ://www.boost.org/doc/libs/1_45_0/libs/test/doc/html/utf/user-guide/runtime-config/run-by-name.html

但它是用于终端的。我想要的是一个调用所有测试的可执行文件。

谢谢你的帮助

标签: c++unit-testingtestingboost

解决方案


在您的 CMakeLists.txt 中,您可以定义一个链接所有测试用例对象文件的可执行文件,而不是为每个测试用例文件创建一个可执行文件。

您的 CMakeLists.txt 将包含以下内容

    enable_testing()
    add_executable(execute_all_tests execute_all_tests.cc test1.cc test2.cc)
    add_test(NAME allMyTests COMMAND execute_all_tests)

您的 execute_all_tests.cc 可以包含以下代码(使用单头变体,如此处所述:https ://www.boost.org/doc/libs/1_45_0/libs/test/doc/html/utf/user-guide /usage-variants/single-header-variant.html )

    #define BOOST_TEST_MODULE AllTests
    #include <boost/test/included/unit_test.hpp>

调用 CMakeLists.txt 中指定的 execute_all_tests 二进制文件可以使用命令行参数来调整其执行。


推荐阅读