qt - 如何将 Catch2 与 QT 事件循环集成?
问题描述
QT 的某些部分依赖于事件循环的启动和运行(或至少生成警告)。如何将 Catch2 测试与 QT 事件循环集成?
解决方案
要进行集成,添加一次性计时器将导致函数在应用事件循环处于活动状态时立即运行。这是我的代码的样子:
#define CATCH_CONFIG_RUNNER
#include "catch.hpp"
#include <QCoreApplication>
#include <QTimer>
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
QTimer::singleShot(0, [&]{
app.exit(Catch::Session().run(argc, argv));
});
return app.exec();
}
特别是对我来说,我收到了一堆警告,上面写着“QSocketNotifier 只能用于以 QThread 开头的线程”,但事实证明这实际上只是意味着它想要一个事件循环存在。此处的代码为我删除了警告。
推荐阅读
- css - 无法在 adminlte 中滚动控制侧边栏
- html - 浮动左元素和浮动右元素被标题(chrome)向上推
- java - 调用 init 方法失败;嵌套异常是 java.lang.ClassCastException:java.time.LocalDateTime 不能转换为 java.lang.String
- python - 尝试通过 ansible 任务在 SQL Server 上创建数据库时 pymssql 出现分段错误
- mongodb - Mongodb文本搜索(精确匹配、模糊匹配)
- javascript - 同步 iframe
- r - 如何在R中的同一图中将线图和箱线图与显着差异结合起来
- javascript - 带有 Express Swagger 生成器的自定义标头?
- git - 错误:GH008:您的推送引用了至少 4 个未知的 Git LFS 对象
- object-detection - 如何理解 yolov4 训练是否过拟合?