Как я могу использовать 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 для информации.