初期化関数とクリーンアップ関数
CUnitではテストスィートを実行する前の初期化関数とクリーンアップ関数が登録できるようなので,試してみた.
CUnitでの,あるSuiteのテスト実行シーケンスは,以下となっている.
- 該当Suiteに登録された初期化関数を実行
- 該当Suiteに登録されたテスト関数を登録順に実行
- 該当Suiteに登録されたクリーンアップ関数を実行
初期化関数とクリーンアップ関数を使用するサンプルを作成してみた.
まずテスト対象を示す.
このプログラムは,数値データを保持し,上位からの初期化,数値追加,数値の取り出しに応じる関数郡からなる.
プログラムは初期化し,プログラムの第一引数を追加して表示し,さらに第二引数を追加して表示する.
このテストでは,通りのパターンでテストスィートを作成し,実行する.
$ ./init-clean 1 10 initData : 0 addData(1) : 1 addData(10) : 11で,このプログラムを構成する関数郡のテストプログラムを作成してみた.
- 初期化,クリーンアップ関数のないパターン
-
pSuite = CU_add_suite("Suite_init", NULL, NULL);この場合,初期化もクリーンアップも実行される,単にテスト関数が呼び出される. - 初期化,クリーンアップ関数があり,ともに成功するパターン
-
pSuite = CU_add_suite("Suite_basic", initTest, cleanTest);この場合,テストスィート実行前にinitTest関数が,実行後にcleanTest関数が呼び出される. - 初期化,クリーンアップ関数があり,初期化関数に失敗するパターン
- pSuite = CU_add_suite("Suite_initFail", failInitTest, cleanTest); この場合,テストスィート実行前にfailInitTest関数が呼び出され,これが1を返すことによって初期化に失敗したと見なされ,テストは実行される,クリーンアップ関数も実行されない.
- 初期化,クリーンアップ関数があり,クリーンアップ関数に失敗するパターン
-
pSuite = CU_add_suite("Suite_cleanFail", initTest, failCleanTest);この場合,テストスィート実行前にinitTest関数が,実行後にcleanTest関数が呼び出される. このクリーンアップ関数の処理には失敗する.

