もちろん、テストクラスには好きなだけスロットを設定できます。しかし、テストが多すぎてすべてを 1 つのクラスに配置できないという理由だけで、遅かれ早かれ、テストを分離してグループ化する必要があります。また、いくつかのテスト クラスを作成する必要があります。
関数の本来の目的は、QTEST_MAIN
1 つのテストのみを実行することです。複数のクラスをテストする必要があり、互いに独立して実行できる場合は、それらを個別のテスト クラスに配置し、QTEST_MAIN
それぞれにマクロを追加して、各クラスを個別の実行可能ファイルにコンパイルできます。プラスは、1 つのテスト ケースがクラッシュしても、他のテストは適切に実行し続けることです。欠点は、すべてのテストを実行してその結果を確認するためにテスト ランナーが必要であり、qtestlib はランナーを提供しないことです。独自のランナーを作成するか、既存のもの ( example ) のいずれかを使用できます。
オプションは次のとおりです。
- QTestLib のパラダイムに従います。他のテストが原因でテストが失敗するのを防ぐために、テストを異なる実行可能ファイルに分けます。
- すべてのテストを 1 つのクラスに格納します。アプリが小さくない場合、これは非常に不便です。
- カスタム main 関数を使用してすべてのテストを手動で実行します。それほど悪くはありませんが、手動でテスト クラスをリストする必要があるため、不便でもあります。
- 別のテスト ライブラリを使用します。私はGoogle Testの方が好きです。qtestlib よりもはるかに強力で、death テストをサポートし、テストを自動的に登録して実行し、その結果をカウントします。グーグルテストではそのような問題はありません。
QSignalSpy
多くの便利な qtestlib 機能 ( など) を別のテスト フレームワークと共に使用できることに注意してください。