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

joh*_*nyb 6 qt catch2

QT 的某些部分依赖于事件循环的启动和运行(或者至少生成警告)。如何将 Catch2 测试与 QT 事件循环集成?

joh*_*nyb 7

为了集成,添加一次性计时器将导致函数在应用程序事件循环处于活动状态时立即运行。我的代码如下所示:

#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();
}
Run Code Online (Sandbox Code Playgroud)

特别是对我来说,我收到了一堆警告,说“QSocketNotifier 只能与以 QThread 启动的线程一起使用”,但事实证明,这实际上只是意味着它希望存在一个事件循环。这里的代码为我删除了警告。