1. 安装
$ cd CUnit-x.x-x
$ ./configure --prefix /usr/local/cunit
$ make
$ sudo make install
$ sudo /sbin/ldconfig
--------------------------------------------------------------------------------
2. 测试用例
/*
* file: func.c
*/
int maxi(int i, int j)
{
return i>j?i:j;
}
/*
* file: test_func.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "CUnit/CUnit.h"
#include "CUnit/Automated.h"
/*---- functions to be tested ------*/
extern int maxi(int i, int j);
/*---- test cases ------------------*/
void testIQJ()
{
CU_ASSERT_EQUAL(maxi(1,1),2);
CU_ASSERT_EQUAL(maxi(0,-0),0);
}
void testIGJ()
{
CU_ASSERT_EQUAL(maxi(2,1),2);
CU_ASSERT_EQUAL(maxi(0,-1),0);
CU_ASSERT_EQUAL(maxi(-1,-2),-1);
}
void testILJ()
{
CU_ASSERT_EQUAL(maxi(1,2),2);
CU_ASSERT_EQUAL(maxi(-1,0),0);
CU_ASSERT_EQUAL(maxi(-2,-1),-1);
}
CU_TestInfo testcases[] = {
{"Testing i equals j:", testIQJ},
{"Testing i greater than j:", testIGJ},
{"Testing i less than j:", testILJ},
CU_TEST_INFO_NULL
};
/*---- test suites ------------------*/
int suite_success_init(void)
{
return 0;
}
int suite_success_clean(void)
{
return 0;
}
CU_SuiteInfo suites[] = {
{"Testing the function maxi:", suite_success_init, suite_success_clean, testcases},
CU_SUITE_INFO_NULL
};
/*---- setting enviroment -----------*/
void AddTests(void)
{
assert(NULL != CU_get_registry());
assert(!CU_is_test_running());
/* shortcut regitry */
if(CUE_SUCCESS != CU_register_suites(suites)) {
fprintf(stderr, "Register suites failed - %s ", CU_get_error_msg());
exit(EXIT_FAILURE);
}
}
/*
* file: run_test.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main( int argc, char *argv[] )
{
if(CU_initialize_registry()) {
fprintf(stderr, " Initialization of Test Registry failed. ");
exit(EXIT_FAILURE);
} else {
AddTests();
CU_set_output_filename("TestMax");
CU_list_tests_to_file();
CU_automated_run_tests();
CU_cleanup_registry();
}
return 0;
}
Makefile:
INC=-I/usr/local/cunit/include
LIB=-L/usr/local/cunit/lib
all: func.c test_func.c run_test.c
gcc $^ -o test $(INC) $(LIB) -lcunit -static
--------------------------------------------------------------------------------
3. 编译并运行测试程序
$ make
$ ./test
--------------------------------------------------------------------------------
4. 查看测试结果
将 {$prefix}/share/CUnit/ 下的
CUnit-List.dtd
CUnit-List.xsl
CUnit-Run.dtd
CUnit-Run.xsl
与测试所生成的
TestMax-Listing.xml
TestMax-Results.xml
文件放在同一文件夹并用浏览器打开