c++ - 如何使用 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();
}
解决方案
我需要对 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();
}
推荐阅读
- time-series - 预测销售额
- excel - excel - 根据单元格值过滤数据透视表
- node.js - mongodb 聚合管道中的 $match 阶段不起作用
- javascript - 根据复选框选择过滤行
- javascript - 在没有 tabBarVisible 选项的情况下从 Stack Navigator 隐藏标签栏
- multithreading - 可以在 MTA 线程中使用 WaitForSingleObject/WaitForMultipleObjects 吗?
- c# - Microsoft.AnalysisServices.AdomdClient 在 .Net Core 应用程序中不起作用(身份验证问题)
- linear-probing - 谁能告诉我实际用途或现实生活中的线性探测示例?
- oracle - 通过 Azure 数据工厂连接 Oracle 数据库
- python - 具有 lambda 层的 tf 切片仅使用最后一个索引