2010-11-28 1 views
14

Мой проект использует CMake как свою систему сборки, и я хочу, чтобы он выполнил мои тестовые примеры Boost.Test.Как использовать Boost.Test в проекте на основе CMake?

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

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 ; 

ответ

14

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

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

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

-2

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

+0

Это похоже на другую структуру тестирования, нет ли способа использовать Boost.Test? – forneo 2010-11-28 22:52:37

+0

Правильный ответ: вы должны использовать CTest. Если вы это сделаете, вы сможете «сделать тест» и/или использовать ctest, с/без панели инструментов, для создания и запуска любой требуемой программы. Опять же, посмотрите в документации CMake. – 2010-11-28 23:00:18

10

I 've сделал некоторые модули в https://github.com/rpavlik/cmake-modules/, включая некоторые для интеграции теста повышения - см. readme в этом репо для получения информации о самом простом способе их использования.

Затем вы должны сделать следующее: предполагается, что test_DimensionedQuantities.cpp является источником драйверов boost.test.

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^