Home · All Namespaces · All Classes · Main Classes · Grouped Classes · Modules · Functions

QTestLib マニュアル

Nokia が提供する QTestLib フレームワークは Qt のアプリケーションやライブラリの為のユニットテストツールです。 QTestLib は一般的なユニットテストフレームワークに見られる全ての機能に加え、GUIのテストのための機能も拡張されています。

Table of contents:

QTestLib の特徴

QTestLib は Qt ベースのアプリケーションとライブラリのためのユニットテストを簡単に記述できるようにデザインされています。

特徴詳細
軽量QTestLib は約 6000 行のコードと 60 の公開されたシンボルから成ります。
Self-containedQTestLib は非GUIのテストのためにはたった数個の Qt Core ライブラリのシンボルしか必要としません。
テストの速さQTestLib は特別な test-runner や特別な登録作業を必要としません。
データ駆動テストテストは様々なテストデータに対して複数回実行することができます。
基本的な GUI テストQTestLib はマウスとキーボードのシミュレーション機能を提供します。
IDE との親和性QTestLib は Visual Studio と KDevelop で解釈できるメッセージを出力します。
スレッドセーフエラー報告はスレッドセーフでアトミックです。
型セーフ広範囲なテンプレートの利用により、暗黙の型変換によるエラーを防ぐことができます。
拡張が簡単カスタム型もテストデータやテストの出力として簡単に追加できます。

ノート:より高機能な GUI とアプリケーションのテストについては Qt testing products provided by Nokia partnersを参照してください。

QTestLib API

全ての public メソッドは QTest 名前空間の中にあります。さらに、 QSignalSpy クラスにより Qt のシグナルとスロットを簡単に観察することができます。

QTestLib の使用

テストの作成

テストを作成するには、 QObject のサブクラスを作成し、いくつかの private スロットを追加してください。 それぞれの private スロットがテストの単位となります。 QTest::qExec() はこのテストオブジェクトの全てのテストを実行するために使用できます。

さらに、テスト関数として 扱われない private スロットが4つあります。 これらはテストフレームワークによって実行され、全体の初期化や終了処理、個々のテスト関数の初期化や終了処理の為に使用されます。

もし initTestCase() が失敗した場合、全てのテスト関数は実行されません。もし init() が失敗した場合、それに続くテスト関数は実行されず、次のテスト関数に移ります。

例:

 class MyFirstTest: public QObject
 {
     Q_OBJECT
 private slots:
     void initTestCase()
     { qDebug("called before everything else"); }
     void myFirstTest()
     { QVERIFY(1 == 1); }
     void mySecondTest()
     { QVERIFY(1 != 2); }
     void cleanupTestCase()
     { qDebug("called after myFirstTest and mySecondTest"); }
 };

他のサンプルは QTestLib Tutorialを使用してください。

テストのビルド

もしあなたが qmake を使用しているのであれば、以下の行をプロジェクトファイルに追加してください。

 QT += testlib

もしあなたが他のビルドツールを使用しているのであれば、 QTestLib のヘッダファイルの位置がインクルードパスに含まれていることを確認してください。(通常は Qt のインストールディレクトリの下の include/QtTest に当たります)。もしあなたが Qt のリリースビルドを使用しているのであれば、あなたのテストを QtTest ライブラリにリンクしてください。デバッグビルドの場合は QtTest_debugを使用してください。

個々の説明は Writing a Unit Test を参照してください。

QTestLib コマンドラインの引数

記述方法

自動テストを実行するための記述方法は次の簡単な形式になります。

 testname [options] [testfunctions[:testdata]]...

ここで、 testname はあなたの実行ファイル名に置き換えてください。 testfunctions は実行するテスト関数の名前(複数可)を指定できます。もし testfunctions が渡されなかった場合、全てのテストが実行されます。もし testdataの中のエントリー名を追加した場合、そのテストデータに対してのみテスト関数は実行されます。

例えば:

 /myTestDirectory$ testQString toUpper

toUpper という名前のテスト関数を全てのテストデータに対して実行します。

 /myTestDirectory$ testQString toUpper toInt:zero

toUpper テストを全てのテストデータに対して実行し、 toInt テストを zero という名前のテストデータに対して実行します(もし指定されたテストデータが存在しない場合、このテストは失敗します)。

 /myTestDirectory$ testMyWidget -vs -eventdelay 500

は testMyWidget 関数を実行し、全てのシグナルの発生を出力し、全てのマウス・キーボードイベントのシミュレート後に 500 ミリ秒待ちます。

オプション

下記のコマンドラインオプションが指定可能です:

Windows CE でリモートから QTestLib を使用する

cetest はユーザーがリモートの Windows CE デバイスやエミュレーター上でアプリケーションを起動するのを手助けしてくれる便利なアプリケーションです。

ユニットテストのコンパイルが成功した後で実行する必要があります。

起動の前に、次のファイルをデバイスにコピーしてください:

cetest の使い方

記述方法

自動テストを起動する文法は次のシンプルな形式です:

 cetest [options] ...
オプション

cetest ではクロスコンパイルではない通常のユニットテストと同じオプションを指定します。詳細は Command Line Arguments を参照してください。

以下のコマンドも含まれます:

Note: debug がデフォルトのビルドオプションです。

QtRemote

QtRemote QTestLibの後でビルドされる小さなライブラリです。ホストシステムからリモートデバイス上でプロセスを開始することができ、実行が終わるまで待ちます。

必要事項

cetest はホストコンピューターとデバイス間のリモート接続の為に Microsoft ActiveSync を使用します。 このため cetest と QtRemote を正常にコンパイルするためにはヘッダーファイルとライブラリが必要です。

Qt の インストール の前に、 INCLUDE LIB の環境変数を適切に設定することが必要です。

Windows Mobile 5 for Pocket PC をデフォルトでインストールした場合は以下のようになります:

 set INCLUDE=C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Activesync\Inc;%INCLUDE%
 set LIB=C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Activesync\Lib;%LIB%

Qt はこのパスを記憶するので、クロスコンパイルの際に再度設定する必要はありません。


Copyright © 2008 Nokia Trademarks
Qt 4.4.3