Qt单元测试框架
作者:网络转载 发布时间:[ 2013/7/23 15:44:13 ] 推荐标签:
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 *********

sales@spasvo.com