このセクションでは、手動で作成された既存の CppUnit テスト ケースを実行する方法について説明します。C++test で CppUnit テスト ケースを実行すると、単体テストとレポートを集約できます。C++testのレポートと作成者の算定機能は、開発チームがテスト ケースの失敗を追跡して、いつ誰が失敗の原因を作ったかを特定するのに役立ちます。
開発チームは、コマンドライン モードで毎晩テストを実行できます。開発者は、毎朝テストの実行結果をインポートして、自分が変更したコードによって既存の機能が破損していないかを素早くチェックできます。回帰テストが失敗している場合、その失敗に責任のある開発者が特定されるため、チーム メンバー全員が同じ回帰テスト エラーのリストをチェックする場合に較べて、エラーの修正プロセスが格段に能率的になります。
さらに、C++test は CppUnit テスト ケースのテスト カバレッジ情報を収集できるほか、実行時エラー検出を行うことができます。
このセクションの内容 :
テストへのアクセス
手動で作成された既存の CppUnit テスト ケースにアクセスするように C++test を設定するには、次の操作を行います。
- [C/C++ プロジェクト] ビューで、CppUnit テスト ケース ファイルがあることを確認します。
- [C/C++ プロジェクト] ビューから見える場所であれば、テスト ディレクトリはどこでも構いません。デフォルトでは、テストはプロジェクトの tests ディレクトリの下に保存されます。この保存場所はテスト コンフィギュレーションで変更できます。 [実行] > [全般] タブの [テスト スイート ファイルの場所のパターン] オプションで設定します。
- [Parasoft] メニューの [テスト コンフィギュレーション] をクリックします。
- CppUnit テストを実行するユーザー定義テスト コンフィギュレーションを選択します。
- [実行] タブをクリックします。
- C++test が CppUnit テストの場所を認識してテストできるように、[全般] タブの [テスト スイート ファイルの場所のパターン] オプションを必要に応じて変更します。
- ディレクトリ パスの最後に必ずアスタリスク (*) を追加してください。
- [適用] ボタンをクリックして設定を保存します。
このテスト コンフィギュレーションを使ってテストを実行すると、レガシー テストが実行されます。
要件と制限事項
インポートされたテスト ケースは、次の条件を満たす必要があります。
- CppUnit テスト クラスは、その基底クラスとして CPPUNIT_NS::TestFixture または CPPUNIT_NS::TestCase を持たなければなりません。
- CppUnit テスト クラスはテンプレート クラスになることはできません。
- CPPUNIT_TEST_SUITE_REGISTRATION(TestSuiteName) マクロは、CppUnit ソース ファイル (.cpp) に挿入されなければなりません。
- 次の CppUnit マクロがサポートされています。
- CPPUNIT_TEST_SUITE(ATestFixtureType)
- CPPUNIT_TEST_SUITE_END()
- CPPUNIT_TEST_SUITE_NAMED_REGISTRATION
- CPPUNIT_TEST(testMethod)
- CPPUNIT_TEST_EXCEPTION(testMethod, ExceptionType)
- CPPUNIT_TEST_FAIL(testMethod) CPPUNIT_ASSERT(condition)
- CPPUNIT_ASSERT_MESSAGE(message, condition)
- CPPUNIT_FAIL(message)
- CPPUNIT_ASSERT_EQUAL(expected, actual)
- CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actual, delta)
- CPPUNIT_ASSERT_THROW(expression, ExceptionType)
- CPPUNIT_ASSERT_NO_THROW(expression)
- CPPUNIT_TEST_SUITE_REGISTRATION(ATestFixtureType)
- インポートされた CppUnit テスト ケースのコンテキストは project に設定されます。
ビルドからのテスト ケースの除外
CppUnit ファイルがビルドから除外されていない場合、次の処理が実行されます。
- テスト ファイルに対して静的解析が実行されます。
- テスト ファイルからのカバレッジがレポートされます。
- テスト ファイル中で関数呼び出しがスタブ化されます。
- テスト ファイルに対して自動生成テストが生成されます。
したがって、ビルドから CppUnit ファイルを除外することを推奨します。ただし、これは必須ではありません。
CppUnit ファイルをビルドから除外するには、次の操作を行います。
- CppUnit メソッド定義を持つソース ファイルを右クリックし、ショートカット メニューの [プロパティ] をクリックします。
- [構成プロパティ] の下の [全般] を選択します。
- [ビルドから除外] のドロップダウン リストから [はい] を選択します。
- CppUnit クラスとメソッド定義を持つヘッダー ファイルを右クリックし、ショートカット メニューの [プロパティ] をクリックします。
- [構成プロパティ] の下の [全般] を選択します。
- [ビルドから除外] のドロップダウン リストから [はい] を選択します。