Могу ли я связать несколько тестов модулей BOOST с одним тестовым двоичным кодом?
Недавно я начал пытаться тестировать почтенную и большую ( > 1 млн. строк) программу. В настоящее время нет единичных тестов. Кроме того, программа связана как связанный друг с другом отдельный файл - нет библиотек компонентов. Кроме того, объекты сильно взаимозависимы, и трудно (невозможно?) Связываться с любыми объектными файлами, не связывая их хотя бы с половиной из них.
Да, я знаю, моя жизнь отстой.
Я бы хотел сделать некоторые рефакторинг (очевидно), но я бы хотел, чтобы некоторые тесты были на месте, прежде чем я начну перемещаться. Моя идея состоит в том, чтобы скомпилировать одну "тестовую программу", которая запускает все те тесты, которые я создаю. Это значительно упростило бы проблемы связи, которые у меня есть, и позвольте мне сосредоточиться на реальных проблемах. Поэтому у меня есть два вопроса:
- Возможно ли связать несколько файлов BOOST unit test в один тестовый исполняемый файл?
- Есть ли лучшее решение?
Ответы
Ответ 1
Я предполагаю, что это именно то, как использовать boost-тест.
Я бы сохранил один короткий файл main.cpp, состоящий из буквально двух строк:
#define BOOST_TEST_MODULE "C++ Unit Tests for MyTangledLibrary"
#include <boost/test/included/unit_test.hpp>
И тогда я буду добавлять файлы тестового модуля *.cpp, скомпилированные в один исполняемый файл
#include <boost/test/unit_test.hpp>
<< your include files >>
BOOST_AUTO_TEST_SUITE(FancyShmancyLogic)
BOOST_AUTO_TEST_CASE(TestingIf2x3equals6)
{
...
}
BOOST_AUTO_TEST_CASE(TestingIf2x2equals4)
{
...
}
BOOST_AUTO_TEST_SUITE_END()
Да, вы сможете скомпилировать этот main.cpp и все ваши модули в один большой исполняемый файл.
Ответ 2
Альтернативный подход следует из
http://neyasystems.com/an-engineers-guide-to-unit-testing-cmake-and-boost-unit-tests/, где вы не создаете один файл, но все же enable_testing() в файле cmake позволяет вам вызывать все тесты на один раз с вашим генератором. Если ваш генератор сделан, тогда он просто делает тест.