• 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

  • 相关阅读:
    Sizzle选择器引擎介绍
    from、includes、indexOf
    indexOf与includes的区别
    ES6 find 和 filter 的区别
    Spring MVC多个视图解析器及优先级
    Spring MVC多个视图解析器及优先级
    freemarker 中文乱码问题解决办法
    freemarker 中文乱码问题解决办法
    freemarker 中文乱码问题解决办法
    Spring集成MyBatis 通用Mapper以及 pagehelper分页插件
  • 原文地址:https://www.cnblogs.com/findumars/p/8456109.html
Copyright © 2020-2023  润新知