Qt单元测试工具 QTestlib(QVERIFY, QFETCH, QCOMPARE等)


优点: 
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
  • 1
  • 2
  • 3
  • 4
initTestCase() //在第一个测试函数运行前调用 cleanupTestCase() //在终于第一个测试函数运行后调用 init() //在每个测试函数运行前被调用 cleanup() //在每个测试函数运行后调用
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

初始化测试数据一般先有测试函数_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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

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

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

http://blog.csdn.net/uriel_chiang/article/details/77871149


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM