我可以为提升单元测试安装信号处理程序吗?

Can I install a signal handler for Boost unit tests?

本文关键字:信号处理 程序 安装 单元测试 我可以      更新时间:2023-10-16

我有很多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()函数,以便能够在那里设置信号处理程序?

按照此处的说明,您可以提供自己的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);
}