首页 > 解决方案 > 如何使用 Boost Unit Test 框架测试 Qt 应用程序

问题描述

是否可以为 Qt 应用程序编写单元测试,例如 QCoreApplication 来测试它在任意时间调用的函数?假设我想测试我的类的成员函数,比如

void deleteConnectionFromList(QTcpSocket*); 

这个函数应该在其他函数之后调用addNewSocket()

但是我应该把 BOOST_CHECK_EQUAL() 语句放在哪里?

BOOST_AUTO_TEST_CASE( test )
{

  int argc{};
  QCoreApplication app(argc, nullptr);
  Server server;
  app.exec();

}

标签: c++qtunit-testingboostboost-test

解决方案


我需要对 Qt Network 类(需要事件循环)使用 boost 单元测试。我所做的就是这样。

BOOST_AUTO_TEST_CASE(createServerNetwork)
{
QCoreApplication app(boost::unit_test::framework::master_test_suite().argc,
                     boost::unit_test::framework::master_test_suite().argv);

std::thread thread_server( [&](void)
{
[...]//your code here
QCoreApplication::quit();
});

BOOST_CHECK(app.exec() == 0);
thread_server.join();
}

推荐阅读