前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt官方示例-重播GUI事件

Qt官方示例-重播GUI事件

作者头像
Qt君
发布2020-05-08 16:08:55
7120
发布2020-05-08 16:08:55
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

❝本示例是一个测试工程示例。介绍如何模拟GUI事件,以及如何储存一系列GUI事件并在某个小部件(QWidget)上重播它们。 ❞

  1. 将数据函数添加到测试类中:
代码语言:javascript
复制
class TestGui: public QObject
{
    Q_OBJECT

private slots:
    void testGui_data();
    void testGui();
};
  1. 编写数据功能 测试功能的关联数据功能带有相同的名称,后跟_data
代码语言:javascript
复制
void TestGui::testGui_data()
{
    QTest::addColumn<QTestEventList>("events");
    QTest::addColumn<QString>("expected");

    QTestEventList list1;
    list1.addKeyClick('a');
    QTest::newRow("char") << list1 << "a";

    QTestEventList list2;
    list2.addKeyClick('a');
    list2.addKeyClick(Qt::Key_Backspace);
    QTest::newRow("there and back again") << list2 << "";
}

  首先,我们使用QTest::addColumn()函数定义表的元素:GUI事件列表,以及在QWidget上应用事件列表的预期结果。注意,第一个元素的类型是QTestEventList。

  QTestEventList可以用可被存储作为测试数据供以后使用,或在任意的重放GUI事件来填充QWidget的。

  在当前的数据函数中,我们创建两个QTestEventList元素。第一个列表由单击"a"键组成。我们使用QTestEventList :: addKeyClick()函数将事件添加到列表中。然后,我们使用QTest::newRow()函数为数据集命名,并将事件列表和预期结果流式传输到表中。

  第二个列表包含两次按键单击:一个带有后面的"退格键"的"a"。再次,我们使用QTestEventList::addKeyClick()将事件添加到列表中,并使用QTest::newRow()将事件列表和预期结果放入具有关联名称的表中。

  1. 重写测试功能 现在可以重写我们的测试:
代码语言:javascript
复制
void TestGui::testGui()
{
    QFETCH(QTestEventList, events);
    QFETCH(QString, expected);

    QLineEdit lineEdit;

    events.simulate(&lineEdit);

    QCOMPARE(lineEdit.text(), expected);
}

TestGui::testGui()函数将执行两次,一次是针对在关联的TestGui::testGui_data()函数中创建的测试数据中的每个条目。

  首先,我们使用QFETCH宏获取数据集的两个元素。QFETCH具有两个参数:元素的数据类型和元素名称。然后,我们创建一个QLineEdit,并使用QTestEventList::simulate()函数在该小部件上应用事件列表。

  最后,我们使用QCOMPARE宏来检查行编辑的文本是否符合预期。

  要使我们的测试用例成为独立的可执行文件,需要执行以下两行:

代码语言:javascript
复制
QTEST_MAIN(TestGui)
#include "testgui.moc"

  该QTEST_MAIN运行所有测试功能,并且因为两者的声明和我们的测试类的实现是在一个.cpp文件宏展开为一个简单的main函数,我们还需要包括生成的moc文件,以使Qt的自省工作。

关于更多

  • 「QtCreator软件」可以找到:
  • 或在以下「Qt安装目录」找到:
代码语言:javascript
复制
C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\qtestlib\tutorial4
  • 「相关链接」
代码语言:javascript
复制
https://doc.qt.io/qt-5/qttestlib-tutorial4-example.html
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于更多
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档