QT的某些部分依赖于事件循环的启动和运行(或者至少以其他方式生成警告)。您如何将Catch2测试与QT事件循环集成在一起?
答案 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开头的线程一起使用”,但事实证明,这实际上只是意味着它希望事件循环存在。这段代码在这里为我消除了警告。