dev.Woody 2021. 12. 6. 21:17

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]