第三章:模拟GUI事件
Qt Test 提供了一些机制来测试图形用户界面。与模拟原生窗口系统事件不同,Qt Test 通过发送内部 Qt 事件来模拟事件。这意味着测试运行的机器上没有副作用。
本章演示如何编写一个简单的 GUI 测试。
编写 GUI 测试
这次,让我们假设你想要测试我们的 QLineEdit 类的行为。像以前一样,你需要一个包含测试函数的类
#include <QtWidgets> #include <QTest> class TestGui: public QObject { Q_OBJECT private slots: void testGui(); };
唯一的区别是,除了包含 QTest 命名空间外,你还需要包含 Qt GUI 类的定义。
void TestGui::testGui() { QLineEdit lineEdit; QTest::keyClicks(&lineEdit, "hello world"); QCOMPARE(lineEdit.text(), QString("hello world")); }
在测试函数的实现中,我们首先创建一个 QLineEdit。然后,我们使用 QTest::keyClicks() 函数模拟在行编辑器中写入“hello world”。
注意:为了正确测试键盘快捷键,小部件也必须显示出来。
QTest::keyClicks() 模拟在组件上单击一系列键。可选地,可以指定键盘修改键以及测试中每个键点击后的延迟(以毫秒为单位)。以类似的方式,可以使用 QTest::keyClick()、QTest::keyPress()、QTest::keyRelease()、QTest::mouseClick()、QTest::mouseDClick()、QTest::mouseMove()、QTest::mousePress() 和 QTest::mouseRelease() 函数来模拟相关的 GUI 事件。
最后,我们使用 QCOMPARE 宏检查行编辑器的文本是否符合预期。
准备独立可执行文件
与以前一样,为了让测试用例成为一个独立可执行文件,需要以下两行代码:
QTEST_MAIN(TestGui)
#include "testgui.moc"
QTEST_MAIN() 宏扩展为一个简单的主函数 main(),该函数运行所有测试函数,由于我们的测试类的声明实现都在 .cpp 文件中,所以我们还需要包含生成的 moc 文件,以便 Qt 完成其反射工作。
构建可执行文件
您可以使用 CMake 或 qmake 构建测试用例的可执行文件。
使用 CMake 构建
请在其 CMakeLists.txt 文件中设置您的构建设置。
# Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause cmake_minimum_required(VERSION 3.16) project(tutorial3 LANGUAGES CXX) find_package(Qt6 REQUIRED COMPONENTS Core Gui Test Widgets) qt_standard_project_setup() qt_add_executable(tutorial3 testgui.cpp ) set_target_properties(tutorial3 PROPERTIES WIN32_EXECUTABLE TRUE MACOSX_BUNDLE TRUE ) target_link_libraries(tutorial3 PRIVATE Qt6::Core Qt6::Gui Qt6::Test Qt6::Widgets ) install(TARGETS tutorial3 BUNDLE DESTINATION . RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) qt_generate_deploy_app_script( TARGET tutorial3 OUTPUT_SCRIPT deploy_script NO_UNSUPPORTED_PLATFORM_ERROR ) install(SCRIPT ${deploy_script})
接下来,从命令行运行cmake
,或者使用位于Qt-prefix/
的方便脚本qt-cmake
<Qt-prefix>/<version>/<platform>/bin/qt-cmake <source-dir> <build-dir> -G Ninja
然后,运行您首选的生成工具来构建可执行文件。在这里,我们使用Ninja
ninja
使用qmake构建
在您的.pro
文件中配置构建设置
QT += widgets testlib SOURCES = testgui.cpp # install target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial3 INSTALLS += target
接下来,运行qmake
,最后运行make
来构建您的可执行文件
qmake make
运行可执行文件
运行生成的可执行文件应该为您提供以下输出
© 2024 Qt公司。本文件中包含的文档贡献是各自所有者的版权。本文件中提供的文档是根据自由软件基金会发布的版本1.3的GNU自由文档许可证许可的。Qt及其相应标志是芬兰及/或世界其他国家的Qt公司的商标。所有其他商标均为各自所有者所有。