QTestLib 框架提供了一个简单易用的单元测试框架,需要在工程文件中添加Qt+=testlib。先看一个简单的例子:
#include <QtTest/QtTest> class TestQString: public QObject { Q_OBJECT private slots: // 每个private slot函数都是会被自动调用的测试函数 void testToLower(); // 以“_data”结尾的函数向对应的测试函数提供测试数据 void testToLower_data(); }; void TestQString::testToLower() { // 获取测试数据 QFETCH(QString, string); QFETCH(QString, result); // 如果输入的两个参数不同,则会被认为测试失败 QCOMPARE(string.toLower(), result); } void TestQString::testToLower_data() { // 添加数据列 QTest::addColumn<QString>("string"); QTest::addColumn<QString>("result"); // 添加测试数据 QTest::newRow("lower") << "hello" << "hello"; QTest::newRow("mixed") << "HeLlO" << "hello"; QTest::newRow("upper") << "HELLO" << "hello"; } // 用于构建可执行的测试程序 QTEST_MAIN(TestQString) #include "testqstring.moc" |
此外,Qt还提供了以下四个会被自动调用的private slot:
initTestCase():在测试开始前被调用
cleanupTestCase():在测试结束后被调用
init():每个测试函数执行前被调用
cleanup():每个测试函数执行后被调用
测试完成后输出的结果如下所示:
********* Start testing of TestQString ********* Config: Using QTest library 4.5.3, Qt 4.5.3 PASS : TestQString::initTestCase() PASS : TestQString::testToLower() PASS : TestQString::cleanupTestCase() Totals: 3 passed, 0 failed, 0 skipped ********* Finished testing of TestQString ********* |