QTestlib Manual翻译
Trolltech公司提供的QTestlib框架,是一种针对基于QT编写的程序或库的单元测试工具。QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能。
目录:
QTestlib特性
设计QTestLib的目标是为了简化QT程序或库的单元测试工作。
特性
详细描述
轻量级
QTestlib只包含6000行代码和60个导出符号。
自包含
对于非GUI测试,QTestlib只需要Qt核心库的几个符号。
快速测试
QTestlib不需要特殊的测试执行程序,不需要为测试而进行特殊的注册。
数据驱动测试
一个测试程序可以在不同的测试数据集上执行多次。
基本的GUI测试
QTestlib提供了模拟鼠标和键盘事件的功能。
IDE友好
QTestlib的输出信息可以被Visual Studio和KDevelop解析。
线程安全
错误报告是线程安全的、原子性的。
类型安全
对模板进行了扩展使用,防止由隐式类型转换引起的错误。
易扩展
用户自定义类型可以容易地加入到测试数据和测试输出中。
注意:对于高级的GUI和应用程序测试需求,请参考Trolltech合作伙伴提供的测试产品。(译者注:如FROGLOGIC提供的Squish工具)
QTestLib API
所有公有的方法都在QTest命名空间中。另外,QSignalSpy类为QT的信号和槽提供了简单的内省机制。
使用QTestLib
编写一个测试程序
编写一个测试程序,需要从QObject类派生一个子类并加入一个或者多个私有槽。每一个私有槽都是一个测试函数。QTest::qExec()函数用于执行测试对象中所有的测试函数。
另外,有4种私有槽不能作为测试函数。他们由测试框架执行,可为整个测试程序或当前测试函数进行初始化和清除操作。
initTestCase()会在第一个测试函数执行前调用。1
cleanupTestCase()会在最后一个测试函数执行后调用。
init()会在每一个测试函数执行前调用。
cleanup()会在每一个测试函数执行后调用。
如果initTestCase()函数执行失败,任何测试函数都不会执行。如果init()函数执行失败,紧随其后的测试函数不会被执行,测试会继续处理下一个测试函数。
例子:
class MyFirstTest: public QObject
{
Q_OBJECT
private slots:
void initTestCase()
{
qDebug("called before everything else");
}
void myFirstTest()
{
QVERIFY(1 == 1);
}
void mySecondTest()
{
QVERIFY(1 != 2);
}
void cleanupTestCase()
{
qDebug("called after myFirstTest and mySecondTest");
}
};
更多测试例子,请参阅QTestLib Tutorial。
编译一个测试程序
如果使用qmake作为编译工具,只需在project文件中增加移行:
QT += testlib (注意,此处有错,应为CONFIG += qtestlib)
如果使用其它的编译工具,确保把QTestLib的头文件加入到include路径(通常是Qt安装路径下的include/QtTest目录)。如果你要创建Qt程序的发行版本,将测试程序链接到QtTest库。如果你要创建Qt程序的调试版本,使用QtTest_debug。
QTestlib命令行参数
语法
执行自动测试的语法接收下列简单形式:
testname [options] [testfunctions[:testdata]]...
用你的可执行文件替换testname。testfunctions包含要执行的测试函数名,如果不指定testfunctions,所有的测试函数都会执行。如果测试函数名之后加上了测试数据行的名字,则测试函数执行时只会使用该行测试数据。
列如:
/myTestDirectory$ testQString toUpper
使用所有的测试数据执行toUpper测试函数。
/myTestDirectory$ testQString toUpper toInt:zero
使用所有的测试数据执行toUpper测试函数,使用行名为zero的测试数据执行toInt测试函数(如果对应的测试数据不存在,相关的测试执行时就会失败)。
/myTestDirectory$ testMyWidget -vs -eventdelay 500
执行testMyWidget测试程序,输出每一个信号发射信息,在每次模拟鼠标/键盘事件之后等待500毫秒。
选项
下列命令行参数可以被接受:
-help
输出命令行参数的帮助信息。
-functions
输出测试中的所有测试函数。
-o filename
将输出信息写入到执行文件中,而不是打印到标准输出上。
-silent
沉默地输出,只显示警告、错误和最少的状态信息。
-v1
详细输出;输出每次进入或离开测试函数的信息。
-v2
详细输出;也输出每个QCOMPARE()和QVERIFY()信息。
-vs
输出发出的所有信号。
-xml
将输出格式化成XML格式,而不是普通文本
-lightxml
输出成XML标签流。
-eventdelay ms
如果键盘或鼠标模拟(QTest::keyClick(),QTest::mouseClick()等)不指定延迟时间,则使用该参数(以毫秒为单位)作为延迟时间。
-keydelay ms
与-eventdelay的作用一样,但只影响键盘模拟的延迟时间,不影响鼠标模拟的延迟时间。
-mousedelay ms
与-eventdelay的作用一样,但只影响鼠标模拟的延迟时间,不影响键盘模拟的延迟时间。
-keyevent-verbose
详细输出键盘模拟信息。
-maxwarnings numberBR
设置警告信息的最大数量,0表示不限制,默认值为2000。
在Windows CE上远程使用QTestLib
cetest能够帮助用户方便地在Windows CE设备或模拟器上加载应用程序,并且它需要在单元测试被成功编译后才能执行。
加载前,下列文件将拷贝到设备上:
该工程链接的所有Qt库
安装时指定的c运行库
.pro文件中DEPLOYMENT规则指定的所有文件
使用cetest
语法
执行自动测试的语法接受下列简单形式:
cetest [options] ...
选项
cetest不仅提供了与非交叉编译平台相同的选项,参考Command Line Arguments,而且增加了下列选项:
-debug
在调试模式下编译测试程序。
-release
在发行模式下编译测试程序。
-libpath path
指明拷贝Qt库的目标路径。
-qt-delete
执行结束后删除Qt库。
-project-delete
执行结束后删除工程文件。
-delete
执行结束后删除工程文件和Qt库。
-conf
指定一个将被部署到远程路径中的qt.conf文件
注意:debug是默认的编译选项。
QtRemote
QtRemote是在QTestLib之后编译的一个小的库。它允许主机系统创建一个在远程设备上运行的进程,并等待其执行结束。
约束条件
cetest使用Microsoft ActiveSync建立主机和设备之间的远程连接,顺利编译cetest 和QtRemote需要与之相关的头文件和库。
在安装Qt之前,需要正确设置INCLUDE和LIB环境变量。
Pocket PC上Windows Mobile 5的默认安装可通过下述方式得到:
set INCLUDE=C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Activesync\Inc;%INCLUDE%
set LIB=C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Activesync\Lib;%LIB%
注意Qt会记住该路径,因此即使切换到交叉编译环境,你也不需要重新设置它。
QTestlib Manual翻译的更多相关文章
- log4j配置webapp日志系统
1.基础知识: Log4j的中文文档 (这是根据最新的log4j(jakarta-log4j-1.2.8)的开发包自带文档的manual翻译的) http://dev.csdn.net/develop ...
- 优化脚本性能 Optimizing Script Performance
This page gives some general hints for improving script performance on iOS. 此页面提供了一些一般的技巧,提高了在iOS上的脚 ...
- Manual——Test (翻译1)
LTE Manual ——Logging(翻译) (本文为个人学习笔记,如有不当的地方,欢迎指正!) 1.17.3 Testing framework(测试框架) ns-3 包含一个仿真核心引擎. ...
- LTE Manual ——Logging(翻译)
LTE Manual ——Logging(翻译) (本文为个人学习笔记,如有不当的地方,欢迎指正!) 9 Logging ns-3 日志功能可以用于监测或调试仿真程序的进展.日志输出可以通过 ma ...
- [翻译]QT core wallet manual 狗狗币核心钱包使用教程
译注:比特币没赶上可以玩狗狗币啊,水电厂包不起可以用CPU挖啊.为了顺应时代潮流,了解一下区(fa)块(heng)链(cai)和加密货币技术,准备从研究狗狗币开始.网上找了一圈没有看到很好的入门级教程 ...
- 【socket编程】select manual page翻译
原文: select manual page 依赖的头文件 /* According to POSIX.1-2001, POSIX.1-2008 */ #include <sys/select. ...
- trove manual installation 翻译
目标 此文件提供了一步一步的指导手动安装trove在一个现有OpenStack的环境为了开发. 该文件将不包括: OpenStack的设置 trove服务配置 要求 正在运行的OpenStack的环境 ...
- 开始进行lammps手册的学习啦,跟着Manual一边翻译一边做吧!(转载)
转载自:http://blog.sina.com.cn/s/blog_64813e370100ngsz.html 注明:黄色部分基本上为不懂的部分,红色字体为所做注释 一.各种文件的介绍: 1 in ...
- Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译
本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
随机推荐
- C# ITextShap 生成PDF 下载
using iTextSharp.text; using iTextSharp.text.pdf; //创建 Document Document pdfDoc = new Document(new R ...
- 三个重要的游标sp_cursoropen
請問這三個存諸過程的作用是什么﹖ sp_cursoropen, sp_cursorfetch, sp_cursorclose API 服务器游标实现 SQL Server OLE DB 提供程序. ...
- 伪协议触发onbeforeunload
根据MSDN描述,IE的onbeforeunload事件触发条件: 简单点来说就是页面URL发生改变时触发: * 关闭浏览器窗口 * 点击后退.前进.刷新.主页 * 点击链接到新页面 * 调用超链接的 ...
- Rescue--hdu1242
Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 鼠标点击变色 lvha
a标签有四个"状态"的先后过程是:a:link ->a:hover ->a:active ->a:visited.另外,a:active不能设置有无下划线(总是有 ...
- 开发反模式(GUID) - 伪键洁癖
一.目标:整理数据 有的人有强迫症,他们会为一系列数据的断档而抓狂. 一方面,Id为3这一行确实发生过一些事情,为什么这个查询不返回Id为3的这一行?这条记录数据丢失了吗?那个Column到底是什么? ...
- 深入浅出CChart 每日一课——第十八课 女神的套娃,玩转对话框
前面笨笨已经给大家展示了CChart编程的N个例子.这些例子中,我们的CChart图像都是绘制在程序的主窗口中的. 在很多情况下,我们面对的情形不是这样的.这节课笨笨就给大家介绍一下怎样在对话框中用C ...
- 一道有关球赛队员分配的C++程序题目
题目描述: 两个球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已经抽签决定比赛名单. 有人向队员打听比赛安排的名单.a说他不和x比,c说他不和x,z比,请编程找出三队赛手的名单. ...
- Angular学习笔记(2)——TODO小应用
Angular学习笔记(2)--TODO小应用 1. 写在前面 之前我们跑了Angular的Hello World,你是不是对它有点感觉了呢?这一篇将结合一个TODO程序来继续学习Angular的用法 ...
- python学习之路-6 冒泡算法、递归、反射、os/sys模块详解
算法 冒泡算法 # 冒泡算法就是将需要排序的元素看作是一个个"气泡",最小的"气泡"最先浮出水面,排在最前面.从小到大依次排列. # 代码如下: li = [9 ...