前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt单元测试框架快速上手

Qt单元测试框架快速上手

作者头像
Qt君
发布2019-07-15 16:43:55
2.8K0
发布2019-07-15 16:43:55
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

本文介绍Qt的单元测试框架是什么,有什么用和怎么快速使用它。

1.是什么?

Qt单元测试框架除了提供单元测试框架的基本功能外还提供了针对GUI测试的扩展功能。一般单元测试意义上是指对软件中的最小可测试单元进行检查和验证,其中最小测试单元可以为某个功能点,某个类,某个函数,甚至是某个行为等等。

2.有什么用?

  • 加快开发效率;
  • 提高程序质量。

3.怎么使用?(图解)

1.选择其他项目->Auto Test Project

2.输入项目名与选择项目目录。

3.选择一个单元测试的类名(这里是AutoTest)

  • Requires QApplication选项为程序添加QApplication类;
  • Generate initialization and cleanup code选项为添加初始化与清除代码(函数)。

4.选择编译环境。

5.最后创建完成。

6.项目目录

4.使用技巧

  以AutoTest测试类为例(文末源码),自动执行带有private slots标记的函数,并会顺序执行。

  • initTestCase是默认第一执行函数(系统自带),用于初始化一些数据和行为;
  • cleanupTestCase是默认最后执行函数(系统自带),用于清理资源和重置状态的操作。
代码语言:javascript
复制
private slots:
    void initTestCase(); /* 可选 */
    void test_case1();
    void test_case2();
    void cleanupTestCase(); /* 可选 */

测试工具(测试验证函数)

  • 为验证被测试函数的结果,需要使用QTest提供的测试函数。

验证函数

用途

QVERIFY(bool)

验证参数是否为真

QCOMPARE(actual, expected)

验证实际参数是否跟期望值一致

  • 示例:
代码语言:javascript
复制
void AutoTest::test_case1()
{
    QString name("AutoTest");
    bool isEnable = true;
    QVERIFY(isEnable);
    QCOMPARE(name, QString("AutoTest"));
}

5.附录

  • AutoTest.pro
代码语言:javascript
复制
QT += testlib
QT -= gui

CONFIG += qt console warn_on depend_includepath testcase
CONFIG -= app_bundle

TEMPLATE = app

SOURCES +=  tst_autotest.cpp
  • tst_autotest.cpp
代码语言:javascript
复制
#include <QtTest>

// add necessary includes here

class AutoTest : public QObject
{
    Q_OBJECT

public:
    AutoTest();
    ~AutoTest();

private slots:
    void initTestCase();
    void test_case1();
    void test_case2();
    void cleanupTestCase();
};

AutoTest::AutoTest()
{

}

AutoTest::~AutoTest()
{

}

void AutoTest::initTestCase()
{

}

void AutoTest::test_case1()
{
    QString name("AutoTest");
    bool isEnable = true;
    QVERIFY(isEnable);
    QCOMPARE(name, QString("AutoTest"));
}

void AutoTest::test_case2()
{

}

void AutoTest::cleanupTestCase()
{

}

QTEST_APPLESS_MAIN(AutoTest)

#include "tst_autotest.moc"
  • 输出信息
代码语言:javascript
复制
Config: Using QtTest library 5.12.2, Qt 5.12.2 (x86_64-little_endian-llp64 shared (dynamic) debug build; by GCC 7.3.0)
PASS   : AutoTest::initTestCase()
PASS   : AutoTest::test_case1()
PASS   : AutoTest::test_case2()
PASS   : AutoTest::cleanupTestCase()
Totals: 4 passed, 0 failed, 0 skipped, 0 blacklisted, 2ms
********* Finished testing of AutoTest *********
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.是什么?
  • 2.有什么用?
  • 3.怎么使用?(图解)
  • 5.附录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档