天天看點

Qt單元測試工具 QTestlib

優點:

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
           
initTestCase()
//在第一個測試函數運作前調用
cleanupTestCase()
//在終于第一個測試函數運作後調用
init()
//在每個測試函數運作前被調用
cleanup()
//在每個測試函數運作後調用
           

初始化測試資料一般先有測試函數_data()進行初始化資料

> void QTest::addColumn(const char *name, T *dummy = )
> QTestData &QTest::newRow(const char *dataTag)

//建立要測試的資料列
      QTest::addColumn<QString>("aString");
      QTest::addColumn<int>("expected");
//添加資料行
      QTest::newRow("positive value") << "42" << ;
      QTest::newRow("negative value") << "-42" << -;
      QTest::newRow("zero") << "0" << ;
           

而後在測試函數(槽)中使用

//測試資料擷取

> QFETCH(type, name)
       QFETCH(QString, aString);
       QFETCH(int, expected);
           
//測試資料比較
> QCOMPARE(actual, expected);
//actual, expected值相等,就繼續執行
           

ps:

其他平台工具:

http://blog.csdn.net/libing403/article/details/72909348

繼續閱讀