У меня много блочных тестов. Я не могу найти место, куда я должен поместить свой обработчик сигнала. Нет никаких main()
Функция в файлах в каталоге модульных тестов. Кажется, что main()
скрыт в некоторых макросах.
В unit_test.hpp
Я вижу:
namespace boost { namespace unit_test {
int BOOST_TEST_DECL unit_test_main( init_unit_test_func init_func, int argc, char* argv[] );
}
Но как я могу реализовать свой собственный main()
функция, чтобы иметь возможность установить обработчик сигнала там?
Согласно инструкции Вот, Вы можете предоставить свой собственный main
функция для установки обработчика сигнала. Вот некоторый код, принятый для этого:
#define BOOST_TEST_MODULE custom_main
#define BOOST_TEST_NO_MAIN
#define BOOST_TEST_ALTERNATIVE_INIT_API
#include <boost/test/included/unit_test.hpp>
#include <iostream>
#include <unistd.h>
#include <signal.h>
void signalHandler(int sig)
{
std::cerr << "Inside signal handler" << std::endl;
}
namespace utf = boost::unit_test;
BOOST_AUTO_TEST_CASE(test1)
{
BOOST_TEST(false);
}
int main(int argc, char* argv[], char* envp[])
{
signal(SIGINT, signalHandler);
signal(SIGTERM, signalHandler);
return utf::unit_test_main(init_unit_test, argc, argv);
}
Других решений пока нет …