主要的逻辑是,存储Widget事件,然后在Test中重放

如下,在私有槽函数中测试函数如果要加模拟,需要在后面添加_data()

class TestGui: public QObject
{Q_OBJECTprivate slots:void testGui_data();void testGui();
};

下面的代码中,QTest::addColumn为添加列,第一个为重现的事件,第二个为目标预期值,以及这个QTest::newRow("XXXX")这里为跑起来后提示的值

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 << "";
}

下面这个函数将会执行2次,这个次数是根据QTest::addRow()的数量决定的

void TestGui::testGui()
{QFETCH(QTestEventList, events);QFETCH(QString, expected);QLineEdit lineEdit;events.simulate(&lineEdit);QCOMPARE(lineEdit.text(), expected);
}

下面是完整实例

程序运行截图如下:

源码如下:

test4.pro

QT += widgets testlib
SOURCES = main.cpp
INSTALLS += target

main.cpp

#include <QtWidgets>
#include <QtTest>class TestGui: public QObject{Q_OBJECTprivate slots:void testGui_data();void testGui();
};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("中文") << list2 << "a";
}void TestGui::testGui(){QFETCH(QTestEventList, events);QFETCH(QString, expected);QLineEdit lineEdit;events.simulate(&lineEdit);QCOMPARE(lineEdit.text(), expected);
}QTEST_MAIN(TestGui);
#include "main.moc"

Qt文档阅读笔记-重现GUI事件进行单元测试相关推荐

  1. Qt文档阅读笔记-写一个简单的单元测试

    程序运行截图如下: 控制台: QtCreator: 源码如下: test.pro QT += widgets testlibHEADERS = head.h SOURCES = source.cpp ...

  2. Qt文档阅读笔记-共享库的创建与调用

    使用共享库的符号 这个符号可以作用在变量.类.函数中,并且这些都可以被调用端使用. 在编译共享库中,需要使用export符号.在使用端调用的时候使用import符号. 这里是本人从文档中记录的笔记,大 ...

  3. Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图

    Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...

  4. Qt文档阅读笔记-Rotations Example相关

    Rotations Example文档阅读笔记 使用这种方式,对y轴和z轴进行旋转. QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0 ...

  5. Qt文档阅读笔记-Qt单元测试中模拟GUI事件

    这里先提下基本概念 官方的模拟GUI事件,就是调用QTest提供的函数,去模拟用户鼠标点击,用户输入等效果.从而达到模拟的功能,感觉这个功能非常的好. 如: QTest::keyClicks()主要是 ...

  6. Qt文档阅读笔记-QWebEngineView及QML WebEngineView

    这里主要是最近有给Java Web项目及Qt项目需要混合,自己搞的QtWebEngine没有问题,而用了项目里面的,就有问题,在此阅读下官方资料,看看能不能解决这样莫名其妙的问题,在此记录下本次的阅读 ...

  7. Qt文档阅读笔记-Fortune Client Example实例解析

    目录 官方解析 实例代码 博主增加解析 官方解析 Fortune Client Example 以使用QTcpSocket为例子,服务端可以配合Fortune Server或Threaded Fort ...

  8. Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)

    moc(Meta-Object Compiler):用于处理Qt中关于C++的扩展. moc工具读取C++头文件,看看这个头文件里面的类是不是包含Q_OBJECT宏,它会将这个头文件,转换为带有met ...

  9. Qt文档阅读笔记-对Style Plugin Example实例的解析

    目录 前言 Style Plugin Example SimpleStylePlugin Class 定义 SimpleStylePlugin Class 实现 main()函数 The Simple ...

最新文章

  1. python的cfg是什么模块_cfg4py:一个严肃的Python配置模块应有的风格-层级式、部署环境自适应、自动补全...
  2. VTK:相互作用之RubberBandPick
  3. Network Namespace
  4. UNIX(多线程):25---当前进程的线程哪些数据共享哪些是私有的
  5. 家用车多少马力才够用?
  6. setState如何知道该做什么?
  7. 在WebForm戏说 js的注释
  8. 李洪强iOS经典面试题34-求两个链表表示的数的和
  9. 客户管理系统代码项目_低代码案例:快速交付包含门店销售终端的SCM供应链管理系统...
  10. MATLAB-数组的使用
  11. 编码原则 之 Separation of Concerns
  12. 不叫 Andromeda?Google 新系统疑为 Fuchsia
  13. 静态html使用js发送邮件,科技常识:html实现邮箱发送邮件_js发送邮件至指定邮箱功能...
  14. 《python(廖雪峰课程)》学习笔记
  15. 【Python】时间序列分析
  16. 夏普linux电视安装apk,夏普智能电视安装第三方应用看直播【最新教程】
  17. 给大家推荐几款简洁实用电脑软件!
  18. [最小路径覆盖]拦截导弹
  19. 思己录-1:人是什么
  20. 计算机语言输入不见了,win7右下角的输入法图标不见_右下角的输入法没了_右下角的语言栏不见了的解决方法...

热门文章

  1. 卸载Android app弹出浏览器的一种实现
  2. 几个优化 Cacti 监控服务性能的技巧
  3. 高效 Java Web 开发框架 JessMA v3.2.1 正式发布
  4. C++编程笔记:贪心算法实现部分背包问题
  5. 开会浪费时间?高效会议的秘诀,是用数据支撑
  6. 飞鸽传书就不去袭击你们了
  7. 同理qt也一样蜡笔小新
  8. 便携本市场一片混乱 东芝也加入战斗
  9. Python基本语法,python入门到精通
  10. 经典面试题(45):以下代码将输出的结果是什么?