testwiki

参考:http://javajiel.blog.sohu.com/158423807.html

QT中QTest的用法

最简单模式:见simplest文件夹

在pro文件中添加一下代码段。

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = myqttest
TEMPLATE = app

isEqual(QT_MAJOR_VERSION, 5) {
    QT += testlib
} else { # if not Qt5
    CONFIG += qtestlib
}
SOURCES +=\
    test.cpp

HEADERS  += \
    test.h

新建一个类,继承自QObject也必须继承自QObject,头文件中在还要定义私有的槽函数,cpp文件中添加头文件

#ifndef TEST_H
#define TEST_H

#define FIRST
#include <QObject>

class Test : public QObject
{
    Q_OBJECT
public:
    explicit Test(QObject *parent = 0);
private slots:
    void toUpper();
};

#endif // TEST_H

cpp文件

#include "test.h"
#include <QTest>

QTEST_MAIN(Test)

Test::Test(QObject *parent) :
    QObject(parent)
{
}

void Test::toUpper()
{
    QString str = "Hello";
    QVERIFY(str.toUpper() == "HELLO");
}

注意:
QTEST_MAIN()宏将扩展成一个简单的main()函数,该main()函数会执行所有的测试函数。注意:如果测试类的声明和实现都在同一个cpp文件中,需要包含产生的moc文件,以使Qt的内省机制起作用。(未测试)

最简模式运行结果

在用QCOMPARE宏时,函数执行结果要与给定结果匹配,否则测试失败,

“`
QCOMPARE(QString(“HELLO”).toUpper(), QString(“HELLO”));
// QCOMPARE(QString(“HELLO”).toUpper(), QString(“HO”));

第一句通过,第二句FAIL!输出结果如下
>>  : Test::toUpper1() Compared values are not the same
   Actual   (QString("HELLO").toUpper()): "HELLO"
   Expected (QString("HO"))             : "HO"
..\..\zack8712-learn\myqttest\simplestExtend\test.cpp(23) : failure location


#####扩展  
>
1. 为了不使测试函数被重复的代码弄得凌乱不堪,QTestLib 支持向测试函数增加测试数据。我们要做的,仅仅是向测试类增加另一个私有槽:一个为测试函数提供数据的函数必须与该测试函数同名,并加上_data后缀
详见:simpleatExtend中


>```cpp
void Test::toUpper_data()
{
    QTest::addColumn<QString>("string");
    QTest::addColumn<QString>("result");
    QTest::newRow("all lower") << "hello" << "HELLO";
    QTest::newRow("mixed") << "Hello"  << "HELLO";
    QTest::newRow("all upper") << "HELLO"  << "HELLO";
}

源代码下载:http://download.csdn.net/detail/zack8712/8521969
git下载:https://code.csdn.net/zack8712/qtproject(见simplest文件夹)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值