c++ - 如何进行执行所有 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 并调用它们,以便该程序的二进制文件可以一次执行所有这些文件?
但它是用于终端的。我想要的是一个调用所有测试的可执行文件。
谢谢你的帮助
解决方案
在您的 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 二进制文件可以使用命令行参数来调整其执行。
推荐阅读
- python - 闭包:一个函数,它返回之前调用的值
- json - SQL Server 2017 JSON 将带有数组的对象解析为 SQL 行
- python - 在 Python 中将任何用户输入转换为 int
- node.js - 无法升级 Expo CLI
- android - 可通过下载观察到的 RxJava 链
- javascript - 如何在 GreaseMonkey 中调用`getEventListeners`
- ios - UITableViewController 返回到单元格中的下一个文本字段
- r - 从 R 中的数据框/小标题中采样分组行
- python - 如何制作对象属性列表并从列表中更改?
- android - 在手机之间交换本地文件的方法