【问题标题】:Can I install a signal handler for Boost unit tests?我可以为 Boost 单元测试安装信号处理程序吗?
【发布时间】:2017-02-01 09:55:18
【问题描述】:

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

【问题讨论】:

  • 您可以禁用主函数生成并提供您自己的。一个例子是here
  • 感谢您的回答!

标签: c++ unit-testing boost signal-handling


【解决方案1】:

根据here 的说明,您可以提供自己的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);
}

【讨论】:

  • 也许你知道如何强制提升单元测试输出它运行的所有测试的名称?谷歌单元测试有选项 -v。但它不适用于提升单元测试。谢谢。
猜你喜欢
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 2011-08-15
  • 1970-01-01
相关资源
最近更新 更多