CxxTest 사용법

개발 노트 2008. 3. 23. 21:20 posted by 무병장수권력자


CxxTest 사용법

작성자 : 김문규
최초 작성일 : 2008. 3.23

1. 환경
- linux FC6, 다른 환경에도 상관없음

2. 목적
- CLogic class의 기능 함수들의 unit test를 하려고 한다.

3. 방법
- (targetclass이름)test.h 라는 file을 생성
- (꼭 test.h로 끝나야 한다. perl script때문이라고 함.)
- CxxTest::TestSuite를 상속받는 class를 정의
- setup()에는 테스트 전 초기화 작업을 정의
- teardown()에는 테스트 후 종료 작업을 정의
- testXXXX() 함수에 하고자 하는 작업을 정의
- Makefile 작성
 하단 예제의 빨간색이 기존 Makefile에 추가해야 할 것들
 cxxtestgen.pl을 이용해서 runner.cpp를 생성하고 이를 빌드! 수행!

4. Complete Guide
- 자세한 사항은 첨부 파일을 참조

5. Sample codes

<logic.cpp>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "logic.h"

int CLogic::func1(int a)
{
        int c = 0;
        c = a * 100;

        printf("result : %d\n", c);fflush(stdout);
        return c;
}


<logic.h>
class CLogic
{
public:
        int func1(int a);
protected:
        int m_val1;
        char* m_str1;
private:
};

<logictest.h>
#include <cxxtest/TestSuite.h>
#include "./logic.h"

class CLogicTest:public CxxTest::TestSuite
{
public:
        CLogic logicclass;
        void setUp()
        {
        }
        void tearDown()
        {
        }
        void testfunc1(void)
        {
                TS_ASSERT(logicclass.func1(12) == 1200);
        }
};


<Makefile>
CC = g++
CFLAGS = -g -Wall
LD_FLAGS = $(LIBS)

LIBOBJS := logic.o
APP1OBJS := main.o
BIN := logic

all: $(BIN) runner

$(BIN): $(APP1OBJS) $(LIBOBJS)
        $(CC) -o $@ $^ $(LD_FLAGS)

#.cpp.o:
#       $(CC) -c $(CFLAGS) $<

runner: runner.cpp $(LIBOBJS)
        $(CC) -o $@ $^ $(LD_FLAGS)

runner.cpp: logictest.h
        ./cxxtestgen.pl -o $@ --error-printer $^

clean:
        rm -f $(TEST) $(APP1OBJS) $(LIBOBJS) $(BIN)
        rm runner*