QtTestLib
Qt Unit Testing Library Harald Fernengel <harald@trolltech.com>
QtTestLib Qt Unit Testing Library Harald Fernengel - - PowerPoint PPT Presentation
QtTestLib Qt Unit Testing Library Harald Fernengel <harald@trolltech.com> What Is It? Lightweight unit testing library Cross-platform, cross-compiler Tests are written in C++ Tests are stand-alone executables Features
Qt Unit Testing Library Harald Fernengel <harald@trolltech.com>
VS)
#include <QtTest/QtTest> class QStringTest: public QObject { Q_OBJECT private slots: void toUpper() { QString str = "text"; COMPARE(str.toUpper(), QString("TEXT")); } }; QTTEST_MAIN(QStringTest)
VERIFY(i + j == 6);
COMPARE(i + j, 6);
void toUpper_data(QtTestTable &t) { t.defineElement("QString", "string"); t.defineElement("QString", "result"); *t.newData("lower") << "kde" << "KDE"; *t.newData("mixed") << "KdE" << "KDE"; }
void toUpper() { FETCH(QString, string); FETCH(QString, result); COMPARE(string.toUpper(), result); }
and releasing of keys and mouse movement
void testGui() { QLineEdit lineEdit; QtTest::keyClicks(&lineEdit, "hi KDE"); COMPARE(lineEdit.text(), "hi KDE"); }
mouseRelease() all take:
keyRelease() all take:
void guiTest_data(QtTestTable &t) { t.defineElement("QtTestEventList", "e"); QtTestEventList list; list.addKeyClick('a'); list.addKeyClick(Qt::Key_Backspace); *t.newData("there and back") << list; }
times:
void guiTest() { FETCH(QtTestEventList, e); QLineEdit lineEdit; e.simulate(&lineEdit); VERIFY(lineEdit.text().isEmpty()); }
QCheckBox box; QSignalSpy spy(&box, SIGNAL(clicked(bool)); box.animateClick(); COMPARE(spy.count(), 1); QList<QVariant> arguments = spy.takeFirst(); COMPARE(arguments.at(0).toBool(), true);
any QObject
it is registered with QMetaType
Qt's meta object system.
COMPARE as expected failure
messages
➙ Easy to learn, easy to maintain
➙ No special environment/task-switch needed
➙ Runs everywhere Qt does
Questions?