Как я могу использовать Boost.Тест в проекте на основе CMake?

мой проект использует CMake в качестве системы сборки, и я хочу, чтобы он выполнил мой импульс.Тестовых испытаний.

Как я могу этого достичь? В Boost.Строить, я мог бы сделать это следующим образом:

import testing ;

use-project /my_lib : ../src ;

unit-test my_test
          : my_test.cpp
            /my_lib
          boost_unit_test_framework
        ;

lib boost_unit_test_framework ;

3 ответов


CMake сам по себе-это просто система сборки; CTest-это просто тестовый бегун, который интегрирован с CMake. Также не является основой модульного тестирования; эта работа может быть выполнена с помощью Boost.Тест или googletest.

использовать ускорение.Тестовая модульная тестовая программа в проекте CMake сначала нужно построить CMake и связать двоичный модульный тест, используя add_executable и target_link_libraries в своем CMakeLists.txt сценарий. Затем вы можете добавить двоичный модульный тест в список тестов для CTest для запуска с enable_testing и add_test.

если вы хотите получить действительно фантазии, вы можете просмотреть документацию CMake для того, как CMake поиск по всем исходным файлам, чтобы найти и построить модульные тесты автоматически, но в первую очередь...


Я сделал несколько модулей в https://github.com/rpavlik/cmake-modules/ включая некоторые для интеграции теста boost-см. readme в этом РЕПО для получения информации о самом простом способе их использования.

затем вы захотите сделать следующее, предполагая test_DimensionedQuantities.ЧГК-это импульс.тест тест источник драйвера.

include(BoostTestTargets)
add_boost_test(DimensionedQuantities
 SOURCES
 test_DimensionedQuantities.cpp)

это добавляет только один тест CTest-visible, который терпит неудачу, если какой-либо из тестов boost терпит неудачу. Если у вас есть тесты, которые могут быть заданы имя тестового драйвера (простейшие макросы попадают в эту категорию) можно сделать примерно так:

include(BoostTestTargets)
add_boost_test(DimensionedQuantities
 SOURCES
 test_DimensionedQuantities.cpp
 TESTS
 CheckCollision
 BodyPoseNotCorrupted
 CheckGraspTransform
 BodyFollowsMockManip1D
 BodyFollowsMockManip2D
 BodyFollowsMockManip3D)

есть еще куча опций, включая настройку заголовка, чтобы выбрать лучший вариант A: включенная версия UTF, B: статическая ссылка или C: динамическая ссылка, а также связь с библиотеками и т. д. Просто посмотрите в файле cmake для информации.


см. тестовые проекты CMake и/или материал CTest в документации / книге CMake.