Как добиться организации наборов тестов и кейсов с помощью Boost?

Предисловие

Я новичок в модульном тестировании и довольно новичок в C ++. Недавно у меня был некоторый опыт разработки на Ruby, основанной на тестировании, с использованием RSpec. Теперь я пытаюсь получить аналогичную работу на C ++ с помощью инфраструктуры модульного тестирования Boost.

Сценарий

Я организую свои заголовочные и исходные файлы приложения в каталоге / src в корневой папке проекта. Как я неоднократно видел в других программах на C ++, размещение тестов в каталоге / tests в корневом каталоге проекта кажется разумным.

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

/src
  /controller
    controller_class.h
    controller_class.cpp
  /model
    model_a.h
    model_a.cpp
    model_b.h
    model_b.cpp
  /view
    simple_view.h
    simple_view.cpp

Таким образом, тесты организованы следующим образом

/tests
  TestRunner.cpp
  /controller
    controller_class_test.cpp
  /model
    model_a_test.cpp
    model_b_test.cpp
  /view
    simple_view_test.cpp

Для TestRunner.cpp я взял пример из этого блога. post :

#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE "MyProgram Unit Tests"
#include 

Проблема

Теперь я решил продолжить в TestRunner.cpp создание базовых тестовых костюмов (для контроллера, модели и представления) следующим образом

BOOST_AUTO_TEST_SUITE ( controller )
  //some stuff here
BOOST_AUTO_TEST_SUITE_END()

BOOST_AUTO_TEST_SUITE ( model )
  //some stuff here
BOOST_AUTO_TEST_SUITE_END()

BOOST_AUTO_TEST_SUITE ( view )
  //some stuff here
BOOST_AUTO_TEST_SUITE_END()

Desire

Но как теперь интегрировать дополнительные вложенные наборы тестов и кейсы в эти наборы тестов верхнего уровня? Наконец, я хочу, чтобы фактические тестовые примеры появлялись только в файлах * _ test.cpp .В то время как каждый из этих файлов объединяет тестовые примеры в один дополнительный набор тестов:

  • Главный тестовый модуль ( TestRunner.cpp )
    • Набор тестов контроллера ( TestRunner.cpp )
      • Набор тестов класса контроллера ( controller_class_test.cpp )
        • Тестовые примеры класса контроллера ( controller_class_test.cpp )
    • Набор тестов для моделей ( TestRunner.cpp )
      • Набор тестов Model A ( model_a_test.cpp )
        • Тестовые наборы модели A ( model_a_test.cpp )
      • Набор тестов модели B ( model_b_test.cpp )
        • Тестовые примеры модели B ( model_B_test.cpp )
    • Просмотреть набор тестов ( TestRunner.cpp )
      • Набор тестов Simple View ( simple_view_test.cpp )
        • Тестовые наборы Simple View ( simple_view_test.cpp )

Вопрос

Как мне включить вложенные костюмы и кейсы в соответствующий набор более высокого уровня? Я не смог найти ничего в документации по Boost, хотя Структура модульного тестирования> Руководство пользователя> Организация тестирования> Набор тестов> Автоматическая регистрация подошла довольно близко.
В Ruby с RSpec нужно просто разместить тестовые файлы (читайте: * _ spec.rb ), как это сделал я, и автоматически перебирая их. Я думаю, что с Boost я должен явно заявить об этом.

6
задан Torbjörn 15 February 2012 в 22:54
поделиться