QTest在方法而不是主中执行测试

QTest execute tests in method instead of main

本文关键字:执行 测试 方法 QTest      更新时间:2023-10-16

是否有一种方法可以在类方法中执行qtest :: qexec((,而不是main((?我需要将我的testProject编译为DLL,而不是独立的.exe。DLL由现有GUI使用,测试应由按钮执行。

但是,当调用Qexec时,QTGUI冻结并且不再响应。以下是QT插槽的实现,该QT插槽处理按钮请求以执行测试,以后应在某些Qedit小部件中读取并显示结果(该Qedit小部件已经有效,已完成虚拟结果(。

>
int GUI_Form::onTestRequested()
{
const char* n_argv[] = { "-o", "dummy.txt"};
QCoreApplication CoreApp(argc, const_cast<char**>(n_argv)); 
QApplication app(argc, const_cast<char**>(n_argv));
return QTest::qExec(&mTestform, argc, const_cast<char**>(n_argv));
}

它可以很好地编译。不实施qcoreapplication和qapplication没有任何功能差异,我添加了它们,因为它们是在通常的main((中需要的。

现在,显然,如果从(其他(GUI应用程序的主线程调用,它将冻结您的GUI。您想从背景线程中调用它(如果您的测试和测试线程安全当然可以安全(