"

环球体育-【平台】拥有全球最顶尖的原生APP,每天为您提供千场精彩体育赛事,环球体育-【平台】更有真人、彩票、电子老虎机、真人电子竞技游戏等多种娱乐方式选择,环球体育-【平台】让您尽享娱乐、赛事投注等,且无后顾之忧!

"

Qt單元測試框架快速上手

小編:啊南 145閱讀 2020.12.26

本文介紹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是默認最后執行函數(系統自帶),用于清理資源和重置狀態的操作。
private slots:
    void initTestCase(); /* 可選 */
    void test_case1();
    void test_case2();
    void cleanupTestCase(); /* 可選 */

測試工具(測試驗證函數)

  • 為驗證被測試函數的結果,需要使用QTest提供的測試函數。

驗證函數

用途

QVERIFY(bool)

驗證參數是否為真

QCOMPARE(actual, expected)

驗證實際參數是否跟期望值一致

  • 示例:
void AutoTest::test_case1()
{
    QString name("AutoTest");
    bool isEnable = true;
    QVERIFY(isEnable);
    QCOMPARE(name, QString("AutoTest"));
}
5.附錄
  • AutoTest.pro
QT += testlib
QT -= gui

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

TEMPLATE = app

SOURCES +=  tst_autotest.cpp
  • tst_autotest.cpp
#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"
  • 輸出信息
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 *********
關聯標簽:
环球体育-【平台】