Могу ли я установить обработчик сигнала для модульных тестов Boost?

У меня много блочных тестов. Я не могу найти место, куда я должен поместить свой обработчик сигнала. Нет никаких 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() функция, чтобы иметь возможность установить обработчик сигнала там?

0

Решение

Согласно инструкции Вот, Вы можете предоставить свой собственный 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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]