Google版にはJUnitのXML形式のレポートを生成する拡張がある。
試したバージョンはオリジナルの2.1-0、Google版の1.1.1。
・オリジナルのCUnit 2.1 のビルド方法
$ dos2unix *
$ libtoolize
$ aclocal
$ autoconf
$ automake --add-missing
$ ./configure --prefix=/usr/local --enable-curses
$ make
・Google版CUnitでJUnitのXML形式のレポートを生成する方法
CU_automated_enable_junit_xml(CU_TRUE);
CU_automated_run_tests();
・Google版CUnitでHudsonのレポートを表示するには
Hudson でレポートを表示するにはJUnit形式で出力して、
以下のスクリプトを通して修正する必要がある。
cunit-to-junit:
#!/usr/bin/perl
while (<>) {
next if (/<cunit_testsuites>/);
next if (/<\/cunit_testsuites>/);
next if (/<cunit_footer>/);
next if (/<\/cunit_footer>/);
print;
}
・Google版CUnit サンプル
#include <stdio.h>
#include <CUnit/CUnit.h>
#include <CUnit/Console.h>
#include <CUnit/CUCurses.h>
#include <CUnit/Automated.h>
#include <CUnit/Basic.h>
#include "config.h"
void setup_test_suite();
void test_01() {
FILE *fp;
fp = fopen("test.log", "w");
CU_ASSERT_PTR_NOT_NULL(fp);
fprintf(fp, "PARAMS=%s %s %s\n", PARAM_A, PARAM_B, PARAM_C);
fclose(fp);
}
void test_02() {
}
void test_03() {
if (strcmp(PARAM_B, "B3") == 0) {
CU_FAIL("PARAM_B is B3");
}
}
enum {
MODE_CONSOLE,
MODE_CURSES,
MODE_AUTOMATED,
MODE_BASIC,
};
int main(int argc, char **argv) {
int mode = MODE_CURSES;
if (argc >= 2) {
char *arg = argv[1];
if (strcmp(arg, "-c") == 0) {
mode = MODE_CONSOLE;
} else
if (strcmp(arg, "-r") == 0) {
mode = MODE_CONSOLE;
} else
if (strcmp(arg, "-a") == 0) {
mode = MODE_AUTOMATED;
} else
if (strcmp(arg, "-b") == 0) {
mode = MODE_BASIC;
} else {
fprintf(stderr, "uknown option: %s\n", arg);
return 1;
}
}
CU_initialize_registry();
CU_automated_enable_junit_xml(CU_TRUE);
CU_set_output_filename("cunit");
setup_test_suite();
switch (mode) {
case MODE_CONSOLE:
CU_console_run_tests();
break;
case MODE_CURSES:
CU_curses_run_tests();
break;
case MODE_AUTOMATED:
CU_automated_run_tests();
break;
case MODE_BASIC:
(void)CU_basic_run_tests();
break;
}
CU_cleanup_registry();
return 0;
}
void setup_test_suite() {
CU_pSuite suite1;
suite1 = CU_add_suite("TestSuite1", NULL, NULL);
CU_add_test(suite1, "test_01", test_01);
CU_add_test(suite1, "test_02", test_02);
CU_add_test(suite1, "test_03", test_03);
}
0 件のコメント:
コメントを投稿