Qt之 Testlib学习(1)

来源:互联网 发布:vans淘宝有正品吗 编辑:程序博客网 时间:2024/05/24 00:22

编写一个单元测试程序

环境 Ubuntu14.04 + Qt 4.8.6

1. 首先,新建文件:

$ mkdir testQString
$ cd testQString
$ touch testQString.cpp

2. 编辑 testQString.cpp

测试QString类的行为。首先,需要一个用于包含测试函数的类。这个类必须从QObject继承,包含QTest头文件,并且测试函数必须声明为私有槽,这样测试框架才可以找到并执行他们。

#include <QtTest/QtTest>#include <QDebug>class TestQString:public QObject{     Q_OBJECTprivate slots:     void toUpper();};void TestQString::toUpper(){    QString str = "Hello";    QVERIFY(str.toUpper() == "HELLO");    QVERIFY(str.toUpper() == "HELLO WORLD");}QTEST_MAIN(TestQString)     #include "testQString.moc"  

QVERIFY()宏:将计算传入的表达式的值。如果为真,则测试函数继续进行;否则会向测试日志中增加一条描述错误的信息,并且该测试函数会停止执行。
QCOMPARE()宏:向测试日志中增加更多的输出信息.如果两个字符串不相等,他们的值都会追加到测试日志中,
QTEST_MAIN()宏: 使测试程序能够单独执行, 将扩展成一个简单的main()函数,该main()函数会执行所有的测试函数。注意:如果测试类的声明和实现都在同一个cpp文件中,需要包含产生的moc文件,以使Qt的内省机制起作用。

3.编译

$ qmake -project "QT += testlib" -o testQString.pro
$ qmake
$ make

  • 注意: 如果使用windows,将make换成nmake或者其它编译工具。

4. 运行

$ ./testQString
********* Start testing of TestQString *********
Config: Using QTest library 4.8.6, Qt 4.8.6
PASS : TestQString::initTestCase()
FAIL! : TestQString::toUpper() 'str.toUpper() == "HELLO WORLD"' returned FALSE. ()
Loc: [testQString.cpp(16)]
PASS : TestQString::cleanupTestCase()
Totals: 2 passed, 1 failed, 0 skipped
********* Finished testing of TestQString *********
$

0 0