QTESTLIBでのユニットテスト - クラス /すべてのテストで単一のテスト /テストを実行する
-
30-09-2019 - |
質問
Qtestlibを使用し始めたばかりです。私は経験しました マニュアル と チュートリアル. 。私はテストを作成する方法を理解していますが、それらのテストを実行するのに便利にする方法がわからないだけです。私のユニットテストの背景は、ヌニットとMSTESTです。これらの環境では、適切なボタンをクリックするだけで、単一のテストを実行するか、1つのテストクラスですべてのテスト、またはプロジェクト全体のすべてのテストを実行するか、1つのテストを実行するか、すべてのテストを実行するのが些細なことでした(少なくともGUIを使用しています)。
Qtestlibで私が見ているのは、あなたが使用することだけです QTEST_MAIN
マクロは1つのクラスでテストを実行し、各ファイルを個別にコンパイルしてテストします。または使用します QTest::qExec()
の main()
テストするオブジェクトを定義し、テストクラスを追加/削除する場合に手動で変更し、再コンパイルするには。
私は何かが足りないと確信しています。簡単にできるようになりたい:
- 単一のテスト方法を実行します
- クラス全体でテストを実行します
- すべてのテストを実行します
それらのいずれかは、適切なセットアップ /分解関数を呼び出します。
編集: 賞金が利用可能になりました。より良い方法、またはあなたや何かのためにそれを処理するGUIテストランナーが必要です。テスト駆動型の環境でQTTESTを使用している場合は、何が機能しているのか教えてください。 (スクリプト、テストランナーなど)
解決
テスト名を渡すことにより、選択したテストケース(テスト方法)のみを実行できます コマンドライン引数 :
myTests.exe myCaseOne myCaseTwo
すべてのINITS/クリーンアップも実行されます。残念ながら、ワイルドカード/パターンマッチングのサポートはありませんので、指定された文字列から始まるすべてのケースを実行するには(「クラス全体でテストを実行する」ことを意味するものだと思います)、スクリプト(Windowsバッチ//Windowsバッチ/ bash/perl/何でも)呼び出す:
myTests.exe -functions
結果を解析し、最初の構文を使用して選択されたテストを実行します。
すべてのケースを実行するには、パラメーターを渡さないでください。
myTests.exe
他のヒント
OPが要求した3つの機能は、現在、に統合されています QT作成者.
プロジェクトはテストのために自動的にスキャンされ、テストペインで編成されます。スクリーンショットの左下:
各テストと対応するデータは、チェックボックスをクリックすることで有効にできます。コンテキストメニューでは、すべてのテスト、クラスのすべてのテスト、選択されたテストまたは1つのテストのみを実行できます。要求に応じて。
テスト結果は、QT作成者からも入手できます。カラーインジケーターは、デバッグメッセージなどの追加情報に沿って、各テストのパス/失敗を示します。
QT作成者と組み合わせて、 QTEST_MAIN
各テストケースのマクロは、各コンパイルされた実行可能ファイルがQTクリエーターによって自動的に呼び出されるため、うまく機能します。
より詳細な概要については、を参照してください AutoTESTSを実行します QT作成者マニュアルのセクション。