Я новичок в модульном тестировании и довольно новичок в 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()
Но как теперь интегрировать дополнительные вложенные наборы тестов и кейсы в эти наборы тестов верхнего уровня? Наконец, я хочу, чтобы фактические тестовые примеры появлялись только в файлах * _ test.cpp
.В то время как каждый из этих файлов объединяет тестовые примеры в один дополнительный набор тестов:
TestRunner.cpp
)
TestRunner.cpp
)
controller_class_test.cpp
)
controller_class_test.cpp
) TestRunner.cpp
)
model_a_test.cpp
)
model_a_test.cpp
) model_b_test.cpp
)
model_B_test.cpp
) TestRunner.cpp
)
simple_view_test.cpp
)
simple_view_test.cpp
) Как мне включить вложенные костюмы и кейсы в соответствующий набор более высокого уровня? Я не смог найти ничего в документации по Boost, хотя Структура модульного тестирования> Руководство пользователя> Организация тестирования> Набор тестов> Автоматическая регистрация подошла довольно близко.
В Ruby с RSpec нужно просто разместить тестовые файлы (читайте: * _ spec.rb
), как это сделал я, и автоматически перебирая их. Я думаю, что с Boost я должен явно заявить об этом.