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

时间:2018-02-06 12:42:59

标签: c++ qt methods qtestlib

有没有办法在classes方法而不是main()中执行QTest :: qExec()? 我需要将我的testproject编译为dll而不是独立的.exe。 dll由现有GUI使用,测试应由按钮执行。

然而,当调用qexec时,QTGUI会冻结并且不再响应。 以下是qt槽的实现,它处理Buttons请求以执行测试,稍后应该读取结果并显示在某个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()中是必需的。

1 个答案:

答案 0 :(得分:0)

您始终可以使用将您的调用导出到QTest :: exec

的dll函数进行换行

现在,显然如果从(其他)GUI应用程序的主线程调用它,它将冻结您的GUI。您想要从后台线程调用它(如果您的测试和类在测试中线程安全)