如何将 Catch2 与 QT 事件循环集成?

How do I integrate Catch2 with the QT Event Loop?

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 can only be used with threads started with QThread",但事实证明,这实际上只是意味着它希望存在一个事件循环。这里的代码为我删除了警告。