작성: ospace.tistory.com (ospace114@empal.com)
CUnit 실행 모드
CUnit 실행하는 모드는 4가지 모드가 존재
- Automated 모드(Automated.h 사용): 자동화시 유용
- 출력을 XML파일로 저장
- Basic 모드(Basic.h 사용)
- 모든 플랫폼에 사용가능
- stdout(표준출력)으로 출력
- Console 모드(Console.h 사용): 일반적 추천
- 모든 플랫폼에 사용가능
- stdout(표준출력)으로 출력
- Curses 모드(CUCurses.h 사용)
- 리눅스의 make menuconfig와 같은 화면
- 링크시 -lcurses 같이 사용
테스트를 위한 기본 설정
기본 헤더 파일
#include "Cunit.h"
테스트 초기화
CUnit 사용위한 모든 테스트 사용위해서는 반드시 필요한 과정.
if (CUE_SUCCESS != CU_initialize_registry()) {
return CU_get_error();
}
테스트 종료
CUnit에서 테스트가 종료되면 리소스 해제함
CU_cleanup_registry();
테스트위한 테스트 단위 설정 정보
테스트위한 테스트 함수
void test_sum1
{
CU_ASSERT( 3 == (1 + 2));
}
단위테스트
테스트 위한 단위 테스트를 설정하기 위한 구조체임. 테스트하는 함수 포인터와 테스트 명을 등록한다.
typedef struct CU_TestInfo {
char *pName; /**< Test name. */
CU_TestFunc pTestFunc; /**< Test function. */
} CU_TestInfo;
사용예
CU_TestInfo tests[] = {
{ "Test_1", test_sum1 },
{ "Test_2", test_sum2 },
CU_TEST_INFO_NULL
};
테스트 집합(Test suite)
테스트 여러개를 모아서 하나의 테스트 집합을 구성하기 위해 사용한다.
typedef struct CU_SuiteInfo {
char *pName; /**< Suite name. */
CU_InitializeFunc pInitFunc; /**< Suite initialization function. */
CU_CleanupFunc pCleanupFunc; /**< Suite cleanup function */
CU_TestInfo *pTests; /**< Test case array - must be NULL terminated. */
} CU_SuiteInfo;
사용예
CU_SuiteInfo suites[] = {
{ "Suite_1", NULL, NULL, tests },
CU_TEST_INFO_NULL
};
Console 테스트 방법
테 스트 추가하는 방법은 다음의 CU_add_suite(), CU_add_tests()를 사용하거나, 위의 구조체 CU_SuiteInfo와 CU_TestInfo를 바로 설정해서 사용하는 방법이 있다. 앞의 예제 처럼 초기화되었다면, 사용하는 방법은 간단히 살펴보면 다음과 같다. 그런 후에 함수를 사용한 방법을 살펴보겠다.
CU_TestInfo tests[] = {
{ "Test_1", test_sum1 },
{ "Test_2", test_sum2 },
CU_TEST_INFO_NULL
};
CU_SuiteInfo suites[] = {
{ "Suite_1", NULL, NULL, tests },
CU_TEST_INFO_NULL
};
CU_register_suites(suites);
CU_console_run_tests();
Test Suite 추가
CU_pSuite suite = NULL;
suite = CU_add_suite("Suite_1", init_suite1, clean_suite1);
if( NULL == suite ) {
CU_cleanup_registry();
return CU_get_error();
}
Test 추가
if( NULL == CU_add_tests(suite, "Test_1", test_sum1 ) ) {
CU_cleanup_registry();
return CU_get_error();
}
Test 실행
if( CUE_SUCCESS != CU_registery_suites(suites) ){
CU_cleanup_registry();
return CU_get_error();
}
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();
CUnit 빌드
gcc인경우
gcc -o 실행파일명 소스파일명.c -lcunit -L/somewhere/cunit_lib
참고
CUnit의 사용, http://galaxyra.linuxstudy.pe.kr/galaxyra/14
CUnit: AUnit Testing Framework for C, http://openracoon.org/?p=20
[CUnit] C에서 Unit test 하기, http://ospace.tistory.com/142
반응형
'4.개발 및 운영 환경' 카테고리의 다른 글
비동기 테스트 (0) | 2012.08.16 |
---|---|
[UnitTest++] 테스트코드 작성 (0) | 2012.08.16 |
Windows에서 지워지지 않은 파일 삭제하기 (0) | 2012.01.09 |
Xming에서 Xwindow 설정과 eclipse 실행 (0) | 2012.01.09 |
NSIS Plugin 맹글기 (0) | 2011.12.23 |