第一章 编写单元测试

如何编写单元测试。

在第一章中,我们将看到如何为一个类编写一个简单的单元测试,以及如何执行它。

编写一个测试

让我们假设你想测试我们的QString类的行为。首先,您需要一个包含测试函数的类。这个类必须继承自QObjet

#include <QtTest/QtTest>
class TestQString: public QObject
{
    Q_OBJECT
private slots:
    void toUpper();
};
注意:您需要包含QTest头文件,并将测试函数声明为私有槽,以便测试框架找到并执行它。

然后,您需要实现测试函数本身。实现可能是这样的:

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

QVERIFY()宏评估作为参数传递的表达式。如果表达式的结果为true,则继续执行测试函数。否则,描述失败的消息将被附加到测试日志中,测试函数将停止执行。

但是如果你想要一个更详细的输出到测试日志,你应该使用QCOMPARE()宏代替:

void TestQString::toUpper()
{
    QString str = "Hello";
    QCOMPARE(str.toUpper(), QString("HELLO"));
}

如果两个字符串不相等,则将两个字符串的内容附加到测试日志中,从而立即看到比较失败的原因。

最后,要使我们的测试用例成为一个独立的可执行文件,需要以下两行代码:

QTEST_MAIN(TestQString)
#include "testqstring.moc"

QTEST_MAIN()宏扩展为运行所有测试函数的简单main()方法。请注意,如果测试类的声明和实现都在.cpp文件中,我们还需要包含生成的moc文件,以使Qt的内省工作。

执行一个测试

现在我们已经完成了测试的编写,我们想要执行它。假设我们的测试保存为testqstring.cpp,保存在一个空目录中,我们使用qmake来创建一个项目并生成一个makefile来构建这个测试。

/myTestDirectory$ qmake -project "QT += testlib"
/myTestDirectory$ qmake
/myTestDirectory$ make

注意:如果你正在使用windows,用nmake或任何你使用的构建工具替换make。

运行结果可执行文件应该会给出如下输出:

********* Start testing of TestQString *********
Config: Using QtTest library %VERSION%, Qt %VERSION%
PASS   : TestQString::initTestCase()

PASS   : TestQString::toUpper()

PASS   : TestQString::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
********* Finished testing of TestQString *********

恭喜你!您刚刚使用Qt test框架编写并执行了第一个单元测试。

示例项目@ code.qt.io

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值