zoukankan      html  css  js  c++  java
  • 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 Tutorial

    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库

    • QtRemote.dll

    • 安装时指定的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 FilesWindows CE Toolswce500Windows Mobile 5.0 Pocket PC SDKActivesyncInc;%INCLUDE%

    set LIB=C:Program FilesWindows CE Toolswce500Windows Mobile 5.0 Pocket PC SDKActivesyncLib;%LIB%

    注意Qt会记住该路径,因此即使切换到交叉编译环境,你也不需要重新设置它。

  • 相关阅读:
    【复现】cve-2020-1472 微软NetLogon权限提升漏洞 附exp
    Vmware 问题【持续更新】
    linux命令之上传文件和下载文件-lrzsz
    在ubuntu16.04中输入不存在shell命令时,报错ModuleNotFoundError的解决方案
    linux编译命令:tmpfs,make,distcc,ccache
    Linux常用命令之必知必会
    crontab定时任务
    Ubuntu使用官网的安装包安装Nodejs
    接口测试(Python)之DDT
    【XMCTF】web3 考核
  • 原文地址:https://www.cnblogs.com/qtgameprograming/p/4286776.html
Copyright © 2011-2022 走看看