CUnit은 C로 작성된 소스에 대해서 Unit Test를 지원해주는 라이브러리이다. . C unit은 어떤 함수의 리턴값이 예상한 값과 맞는지 블랙박스 테스트를 하기 용이하다.CUnit의 테스트 구조는 Registry 있고 Registry 안에 Suite가 있고 그 내부에 Test들이 존재하는 구조를 가진다.
Cunit에서 사용되는 헤더 파일
#include< CUnit/CUnit.h > | 테스트 케이스에 사용하기 위한 ASSERT 매크로 | #include <CUnit/Automated.h > | xml 출력이 있는 자동화된 인터페이스. |
#include <CUnit/CUError.h > | 함수 및 데이터 유형 오류 처리 | #include < CUnit/Basic.h > | stdout에 대한 비대화형 출력이 있는 기본 인터페이스. |
#include < CUnit/TestDB.h > | 테스트 레지스트리, 제품군 및 테스트에 대한 데이터 조작 | #include < CUnit/Console.h > | 대화형 콘솔 인터페이스 |
#include < CUnit/TestRun.h > | 테스트를 실행하고 결과를 검색하기 위한 데이터 함수 | #include < CUnit/CUCurses.h > | 대화형 콘솔 인터페이스(*nix). |
Cunit Test Code 작성하기
테스트 진행할 코드
두 값을 더하는 add함수의 테스트를 진행해보자.
int add(int a,int b){
return a+b
}
테스트를 위한 함수 작성하기-간단하게 더하기 함수를 작성하였다
CU_ASSERT_EQUAL([함수(,)], [예측값])를 이용하여 함수와 예측값을 넣어준다.
void testAdd(void){
CU_ASSERT_EQUAL(add(1,1),2);
}
스위트 선언하기
CU_Psuite를 통해서 스위트를 선언해준다.
CU_pSuite suite = NULL;
테스트 레지스터리 초기화 하기
CU_initialize_registry()를 활용해서 테스트 레지스터리를 초기화 해줄 수 있다.
if(CUE_SUCCESS != CU_initialize_registry()) //레지스터리 초기화
return CU_get_error();
테스트 레지스터리에 스위트를 추가
CU_add_suite를 통해 테스트 레지스터리에 스위트를 추가한다.
pSuite = CU_add_suite("스위트 이름", [테스트 시작 전 함수], [테스트 시작 후 함수]);
pSuite = CU_add_suite("suite", NULL, NULL);
if(NULL = pSuite){
CU_cleanup_registry();
retrun CU_get_error();
}
스위트에 테스트 추가
CU_add_test(suite, "테스트 제목", [테스트함수]);
if ((NULL == CU_add_test(pSuite, "test add", testAdd))){
CU_cleanup_registry();
return CU_get_error();
}
적절한 인터페이스 선택 후 실행 테스트
CU_basic_set_mode를 통해 모드를 선택하고 CU_basic_run_tests를 통해 테스트를 실행한다.
이때, 사용가능한 인테퍼이스는 총 4개가 있다.
Automated : xml파일 출력. Basic : 표준 출력Console : 콘솔입력, 표준출력Curses : GUI (UNIX)
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();
테스트 레지스터 정리
CU_cleanup_registry 를 통해 테스트 레지스터를 정리한다.
CU_cleanup_registry();
Cunit 각 인터페이스별 출력
[Basic]
[Automated]
[Console]
[Curses]
'Computer Science > Software Engineering' 카테고리의 다른 글
ISO/IEC 9126-1 - Software Product Quality 표준 (1) | 2021.12.26 |
---|---|
Cunit Test Code 작성하기 (0) | 2021.12.26 |
C Unit Test Automation(Framework) - TDD (1) | 2021.12.26 |
CMMI와 유사한 국내외 평가모델-SP인증 (1) | 2021.12.26 |
맥북 Google Test 설치하기 (1) | 2021.12.06 |