Qt单元测试工具 QTestlib

来源:互联网 发布:Linux telnet 怎么关闭 编辑:程序博客网 时间:2024/06/03 21:40

优点:
QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能。

特性 详细描述 轻量级 QTestlib 只包含 6000行代码和 60个导出符号。 自包含 对于非GUI测 试,QTestlib只需要Qt核心库的几 个符号。 快速测试 QTestlib不需要特殊的测试执行程序,不需要为测试而进行特殊的注册。 数据驱动测试 一个测试程序可以在不同的测试数据集上执行多次。 基本的GUI测 试 QTestlib提供了模拟鼠标和键盘事件的功能。 IDE友好 QTestlib的输出信息可以被Visual Studio和KDevelop解析。 线程安全 错误报告是线程安全的、原子性的。 类型安全 对模板进行了扩展使用,防止由隐式类型转换引起的错误。 易扩展 用户自定义类型可以容易地加入到测试数据和测试输出中。

使用前提:
1,继承QObject
2,私有槽(每个槽函数都是一个测试函数,将被QTest::qExec()自动调用)

使用的相关宏:

QVERIFY(condition)//condition为真,则程序继续运行,否则测试失败,程序终止运行QVERIFY2(statement, description)//statement为佳,输出description
initTestCase()//在第一个测试函数运行前调用cleanupTestCase()//在终于第一个测试函数运行后调用init()//在每个测试函数运行前被调用cleanup()//在每个测试函数运行后调用

初始化测试数据一般先有测试函数_data()进行初始化数据

> void QTest::addColumn(const char *name, T *dummy = 0)> QTestData &QTest::newRow(const char *dataTag)//建立要测试的数据列      QTest::addColumn<QString>("aString");      QTest::addColumn<int>("expected");//添加数据行      QTest::newRow("positive value") << "42" << 42;      QTest::newRow("negative value") << "-42" << -42;      QTest::newRow("zero") << "0" << 0;

而后在测试函数(槽)中使用

//测试数据获取> QFETCH(type, name)       QFETCH(QString, aString);       QFETCH(int, expected);
//测试数据比较> QCOMPARE(actual, expected);//actual, expected值相等,就继续执行

ps:
其他平台工具:
http://blog.csdn.net/libing403/article/details/72909348