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