優點:
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