Qt單元測試工具 QTestlib(QVERIFY, QFETCH, QCOMPARE等)


優點: 
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
  • 1
  • 2
  • 3
  • 4
initTestCase() //在第一個測試函數運行前調用 cleanupTestCase() //在終於第一個測試函數運行后調用 init() //在每個測試函數運行前被調用 cleanup() //在每個測試函數運行后調用
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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


> void QTest::addColumn(const char *name, T *dummy = 0) > QTestData &QTest::newRow(const char *dataTag) //建立要測試的數據列 QTest::addColumn<QString>("aString"); QTest::addColumn<int>("expected"); //添加數據行 QTest::newRow("positive value") << "42" << 42; QTest::newRow("negative value") << "-42" << -42; QTest::newRow("zero") << "0" << 0;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

//測試數據獲取 > QFETCH(type, name) QFETCH(QString, aString); QFETCH(int, expected); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
//測試數據比較 > QCOMPARE(actual, expected); //actual, expected值相等,就繼續執行 
  • 1
  • 2
  • 3
  • 4

ps: 
其他平台工具: 
http://blog.csdn.net/libing403/article/details/72909348

http://blog.csdn.net/uriel_chiang/article/details/77871149


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM