用例是,我有一个 Qt 应用程序,我想对其进行自动化的用户风格测试;也就是说,我想使用 keyClicks()、mouseClick() 等,但我希望在发生这种情况时实际显示 Qt 应用程序窗口。
我现在遇到的问题是,使用 QTestLib 涉及使用 QTEST_MAIN 宏而不是自己定义 main,所以我永远没有机会显示()正在测试的小部件。因此,这个问题的另一种表达方式是,有没有一种方法可以在使用其主要功能的应用程序上使用 QTestLib?
我知道 Squish 和 Testability Driver 可能具备此功能,但如果无需使用额外工具即可获得此功能,那将是理想的选择。
最佳答案
想出如何做到这一点。完全不需要 Squish,但它需要访问源代码。
在您的测试类中,存储指向 QApplication 和您要测试的任何小部件的指针。为了便于使用,存储指向应用程序的 QMainWindow 的指针。然后,要么使用指向您计划测试的小部件的指针实例化您的测试类,要么使用 window->findChild() 来获取您需要的任何元素。请记住,您需要在一切之后调用 app->processEvents() 。在显示小部件后调用它,以便显示所有子小部件。在与小部件交互后调用它,以便在 GUI 上实际处理交互。如果您需要速度足够慢以便观看,请使用 QTest::qSleep()。
关于c++ - QTestLib 是否可以在运行时显示它正在测试的 GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21126220/