代码之家  ›  专栏  ›  技术社区  ›  johnnyb

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

  •  0
  • johnnyb  · 技术社区  · 5 年前

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

    1 回复  |  直到 5 年前
        1
  •  0
  •   johnnyb    5 年前

    要集成,添加一个一次性计时器将导致函数在应用程序事件循环激活时立即运行。下面是我的代码:

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