zack8712的专栏

参考:

QT中QTest的用法最简单模式:见simplest文件夹

在pro文件中添加一下代码段。

QT+= core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = myqttestTEMPLATE = appisEqual(QT_MAJOR_VERSION, 5) {QT += testlib} else { # if not Qt5CONFIG += qtestlib}SOURCES +=\test.cppHEADERS += \test.h

新建一个类,继承自QObject也必须继承自QObject,头文件中在还要定义私有的槽函数,cpp文件中添加头文件

Test : public QObject{Q_OBJECTpublic:explicit Test(QObject *parent = 0);private slots:void toUpper();};#endif // TEST_H

cpp文件

#include “test.h”#include <QTest>QTEST_MAIN(Test)Test::Test(QObject *parent) :QObject(parent){}void Test::toUpper(){QString str = “Hello”;QVERIFY(str.toUpper() == “HELLO”);}

注意: QTEST_MAIN()宏将扩展成一个简单的main()函数,该main()函数会执行所有的测试函数。注意:如果测试类的声明和实现都在同一个cpp文件中,需要包含产生的moc文件,以使Qt的内省机制起作用。(未测试)

在用QCOMPARE宏时,函数执行结果要与给定结果匹配,,否则测试失败,

“` QCOMPARE(QString(“HELLO”).toUpper(), QString(“HELLO”)); // QCOMPARE(QString(“HELLO”).toUpper(), QString(“HO”));

第一句通过,第二句FAIL!输出结果如下>> : (QString(“HELLO”).toUpper()): “HELLO” Expected (QString(“HO”)): “HO”..\..\#####扩展 >1. 为了不使测试函数被重复的代码弄得凌乱不堪,QTestLib 支持向测试函数增加测试数据。我们要做的,仅仅是向测试类增加另一个私有槽:一个为测试函数提供数据的函数必须与该测试函数同名,并加上_data后缀详见:simpleatExtend中>“`{QTest::addColumn<QString>(“string”);QTest::addColumn<QString>(“result”);QTest::newRow(“all lower”) << “hello” << “HELLO”;QTest::newRow(“mixed”) << “Hello” << “HELLO”;QTest::newRow(“all upper”) << “HELLO” << “HELLO”;}

源代码下载: git下载:https://code.csdn.net/zack8712/qtproject(见simplest文件夹)

人生的大部份时间里,承诺同义词是束缚,奈何我们向往束缚。

zack8712的专栏

相关文章:

你感兴趣的文章:

标签云: