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

时间:2019-06-12 20:10:52

标签: qt catch2

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

1 个答案:

答案 0 :(得分:0)

要进行集成,添加一次触发计时器将使功能在应用程序事件循环激活后立即运行。这是我的代码:

#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开头的线程一起使用”,但事实证明,这实际上只是意味着它希望事件循环存在。这段代码在这里为我消除了警告。