Qt文档阅读笔记-重现GUI事件进行单元测试
主要的逻辑是,存储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事件进行单元测试相关推荐
- Qt文档阅读笔记-写一个简单的单元测试
程序运行截图如下: 控制台: QtCreator: 源码如下: test.pro QT += widgets testlibHEADERS = head.h SOURCES = source.cpp ...
- Qt文档阅读笔记-共享库的创建与调用
使用共享库的符号 这个符号可以作用在变量.类.函数中,并且这些都可以被调用端使用. 在编译共享库中,需要使用export符号.在使用端调用的时候使用import符号. 这里是本人从文档中记录的笔记,大 ...
- Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图
Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...
- Qt文档阅读笔记-Rotations Example相关
Rotations Example文档阅读笔记 使用这种方式,对y轴和z轴进行旋转. QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0 ...
- Qt文档阅读笔记-Qt单元测试中模拟GUI事件
这里先提下基本概念 官方的模拟GUI事件,就是调用QTest提供的函数,去模拟用户鼠标点击,用户输入等效果.从而达到模拟的功能,感觉这个功能非常的好. 如: QTest::keyClicks()主要是 ...
- Qt文档阅读笔记-QWebEngineView及QML WebEngineView
这里主要是最近有给Java Web项目及Qt项目需要混合,自己搞的QtWebEngine没有问题,而用了项目里面的,就有问题,在此阅读下官方资料,看看能不能解决这样莫名其妙的问题,在此记录下本次的阅读 ...
- Qt文档阅读笔记-Fortune Client Example实例解析
目录 官方解析 实例代码 博主增加解析 官方解析 Fortune Client Example 以使用QTcpSocket为例子,服务端可以配合Fortune Server或Threaded Fort ...
- Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)
moc(Meta-Object Compiler):用于处理Qt中关于C++的扩展. moc工具读取C++头文件,看看这个头文件里面的类是不是包含Q_OBJECT宏,它会将这个头文件,转换为带有met ...
- Qt文档阅读笔记-对Style Plugin Example实例的解析
目录 前言 Style Plugin Example SimpleStylePlugin Class 定义 SimpleStylePlugin Class 实现 main()函数 The Simple ...
最新文章
- python的cfg是什么模块_cfg4py:一个严肃的Python配置模块应有的风格-层级式、部署环境自适应、自动补全...
- VTK:相互作用之RubberBandPick
- Network Namespace
- UNIX(多线程):25---当前进程的线程哪些数据共享哪些是私有的
- 家用车多少马力才够用?
- setState如何知道该做什么?
- 在WebForm戏说 js的注释
- 李洪强iOS经典面试题34-求两个链表表示的数的和
- 客户管理系统代码项目_低代码案例:快速交付包含门店销售终端的SCM供应链管理系统...
- MATLAB-数组的使用
- 编码原则 之 Separation of Concerns
- 不叫 Andromeda?Google 新系统疑为 Fuchsia
- 静态html使用js发送邮件,科技常识:html实现邮箱发送邮件_js发送邮件至指定邮箱功能...
- 《python(廖雪峰课程)》学习笔记
- 【Python】时间序列分析
- 夏普linux电视安装apk,夏普智能电视安装第三方应用看直播【最新教程】
- 给大家推荐几款简洁实用电脑软件!
- [最小路径覆盖]拦截导弹
- 思己录-1:人是什么
- 计算机语言输入不见了,win7右下角的输入法图标不见_右下角的输入法没了_右下角的语言栏不见了的解决方法...