C Unit Testing Framework - SourceForge.net
使い方
- VC++ 2008 EE で libcunit.lib を作成する
- CUnit-2.1-0/vc8/libcunit.vcproj を開くと VC++9 用に変換される
- libcunit をコンパイルすると libcunit.lib が作成される
- libcunit.lib と CUnit-2.1-0/CUnit にある /Headers ディレクトリをテストを行うソースファイルのディレクトリにコピーする
CUnit-2.1.0/Share にある CUnit-List.dtd, CUnit-List.xsl, CUnit-Run.dtd, CUnit-Run.xsl をコピーする
例
- CUnit を使う場合は CUnit.h を include する
- Automated でテストする場合は Automated.h を include する
Test registory +--- suite0 | +--- test_001 | +--- test_002 +--- suite1 +--- test_101 +--- test_102
#includeテストを実行する main プログラムを作成する。#include "CUnit/Headers/Automated.h" #include "CUnit/Headers/Cunit.h" /* テスト対象の関数を定義 */ int func(int a) { return (a + 1); } int func_ng(int a) { /* わざとエラーを仕込んだ場合 */ return (a - 1); } /* 各テストを準備 */ void test_001(void) { int ret; ret = func(1); CU_ASSERT(ret == 2); } void test_002(void) { int ret; ret = func(2); CU_ASSERT(ret == 3); } void test_101(void) { int ret; ret = func_ng(1 + 3); CU_ASSERT(ret == 5); } void test_102(void) { int ret; ret = func_ng(3 * 5); CU_ASSERT(ret == 16); }
- CU_initialize_registory() でレジストリを準備
- CU_add_suite() でスイートを定義する
- 各スイートに CU_add_test() でテストを追加する
int main(void) { CU_pSuite suite0, suite1; CU_initialize_registry(); suite0 = CU_add_suite("suite0", NULL, NULL); CU_add_test(suite0, "test_001", test_001); CU_add_test(suite0, "test_002", test_002); /* こちらはエラーになるように仕込んだ関数のテスト */ suite1 = CU_add_suite("suite1", NULL, NULL); CU_add_test(suite1, "test_101", test_101); CU_add_test(suite1, "test_102", test_102); /* コンソール版を使う場合はこちら */ CU_console_run_tests(); /* 結果を XML 出力する場合はこちら */ CU_list_tests_to_file(); CU_automated_run_tests(); CU_cleanup_registry(); return 0; }
- コンソール版でテストをする場合は CU_console_run_tests() で実行する
- XML に出力する場合は CU_list_tests_to_file(), CU_automated_run_tests() で実行する
- 最後に CU_cleanup_registory() で後片付けをする
#include#include "CUnit/Headers/Automated.h" #include "CUnit/Headers/Cunit.h" /* Test registory * +--- suite0 * | +--- test_001 * | +--- test_002 * +--- suite1 * +--- test_101 * +--- test_102 */ int func(int a) { return (a + 1); } int func_ng(int a) { /* わざとエラーを仕込んだ場合 */ return (a - 1); } void test_001(void) { int ret; ret = func(1); CU_ASSERT(ret == 2); } void test_002(void) { int ret; ret = func(2); CU_ASSERT(ret == 3); } void test_101(void) { int ret; ret = func_ng(1 + 3); CU_ASSERT(ret == 5); } void test_102(void) { int ret; ret = func_ng(3 * 5); CU_ASSERT(ret == 16); } int main(void) { CU_pSuite suite0, suite1; CU_initialize_registry(); suite0 = CU_add_suite("suite0", NULL, NULL); CU_add_test(suite0, "test_001", test_001); CU_add_test(suite0, "test_002", test_002); /* こちらはエラーになるように仕込んだ関数のテスト */ suite1 = CU_add_suite("suite1", NULL, NULL); CU_add_test(suite1, "test_101", test_101); CU_add_test(suite1, "test_102", test_102); /* コンソール版を使う場合はこちら */ // CU_console_run_tests(); /* 結果を XML 出力する場合はこちら */ CU_list_tests_to_file(); CU_automated_run_tests(); CU_cleanup_registry(); return 0; }
0 件のコメント:
コメントを投稿