Предисловие
Я новичок в модульном тестировании и довольно плохо знаком с 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
я взял примериз этого сообщения в блоге :
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE "MyProgram Unit Tests"
#include <boost/test/unit_test.hpp>
Задача
Теперь я подумал продолжить в TestRunner.cpp
создание базовых тестовых наборов (для контроллера, модели иview) следующим образом
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
) - Набор тестов для модели A (
model_a_test.cpp
) - Тестовые наборы для модели A (
model_a_test.cpp
)
- Набор тестов для модели B (
model_b_test.cpp
) - Контрольные примеры для модели B (
model_B_test.cpp
)
- Просмотреть набор тестов (
TestRunner.cpp
) - Simple View Test Suite (
simple_view_test.cpp
) - Тестовые случаи Simple View (
simple_view_test.cpp
)
Вопрос
Как мне включить вложенные костюмы и кейсы в соответствующий набор более высокого уровня?Я ничего не смог найти в документации Boost, хотя Модуль модульных тестов> Руководство пользователя> Организация тестирования> Набор тестов> Автоматическая регистрация подошел довольно близко.
В Ruby с RSpec нужно просто поместитьтестовые файлы (читай: *_spec.rb
), как я это делал, и их автоматическая итерация по ним.Я предполагаю, что с Boost я должен явно объявить это таким образом.