QtユニットテストツールQTestlib

3696 ワード

利点:QTestLibはユニットテストフレームワークの基本機能を提供し、GUIテストに対する拡張機能を提供する.
とくせい
詳細な説明
軽量級
QTestlibには6000行のコードと60個のエクスポート記号しか含まれていません.
自己包含
非GUIテストの場合、QTestlibはQtコアライブラリのいくつかのシンボルしか必要ありません.
クイックテスト
QTestlibは特別なテスト実行プログラムを必要とせず、テストのために特別な登録を行う必要はありません.
データ駆動テスト
1つのテストプログラムは、異なるテストデータセット上で複数回実行できます.
基本的な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 = 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;

そしてテスト関数(スロット)で使用
// 

> QFETCH(type, name)
       QFETCH(QString, aString);
       QFETCH(int, expected);
// 
> QCOMPARE(actual, expected);
//actual, expected , 

ps:その他のプラットフォームツール:http://blog.csdn.net/libing403/article/details/72909348