Как сделать тест, который выполняет все тестовые модули Boost - PullRequest
0 голосов
/ 07 февраля 2020

Допустим, у меня есть несколько файлов с модульными тестами 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 ()

My Затем CMake создает исполняемый файл для каждого из cc файлов, и я могу выполнить полученный двоичный файл для тестов.

Есть ли способ создать другой файл с именем execute_all_tests. cc, который включает в себя все остальные тесты *. cc и их вызовы, чтобы двоичный файл этой программы мог выполнить их все сразу?

Я видел это: https://www.boost.org/doc/libs/1_45_0/libs/test/doc/html/utf/user-guide/runtime-config/run-by-name.html

Но это для терминала. Мне нужен исполняемый файл, который вызывает все тесты.

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 13 февраля 2020

В вашем 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>

Вызов Бинарный файл execute_all_tests, указанный в CMakeLists.txt, может использовать аргументы командной строки для настройки своего исполнения.

...