CPPUnit 제대로 써보자.
CPPUNIT 다운로드 : http://cppunit.sourceforge.net
cppunit 1.10.2 기준
### 프로젝트 설정
MFC Dialog Based 프로젝트 생성
1. C/C++ / 일반 / 추가포함 디렉토리
"$(NLELIB)\cppunit\cppunit-1.10.2\include";"$(NLELIB)\cppunit\cppunit-1.10.2\src"
잘 보자. 2개다.
2. C/C++ / 코드 생성 / 런타임 라이브러리 :
다중 스레드 디버그 DLL(Multi-threaded Debug DLL) (/MDd)
3. C/C++ / 언어 / 런타임 형식 정보사용 : 예
4. 링커 / 일반 / 추가 라이브러리 디렉터리 : $(NLELIB)\cppunit\cppunit-1.10.2\lib
5. 링커 / 입력 / 추가 종속성 : cppunitd_dll.lib testrunnerd.lib
6. testrunnerd.dll 파일과 cppunitd_dll.dll 파일을 내 debug 폴더로 복사
### 소스코드 수정
1. APP 파일에서 다음과 같이 한다.
#include "msvc6/testrunner/testrunner.h"
#include "cppunit/extensions/testfactoryregistry.h"
BOOL CUnitTestApp::InitInstance()
{
TestRunner runner;
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
runner.run();
return FALSE;
....
알지 이렇게 하면 그냥 TestRunner만 실행되고 정작 MFC Dialog는 나타나지 않는다.
2. TestCase.h 파일을 만들어 다음과 같이 적는다.
#pragma once
#ifndef _TESTCASE_H_
#define _TESTCASE_H_
#include "cppunit/TestCase.h"
#include "cppunit/extensions/HelperMacros.h"
class TestCaseExample : public CppUnit::TestCase
{
CPPUNIT_TEST_SUITE(TestCaseExample);
CPPUNIT_TEST(Test);
CPPUNIT_TEST_SUITE_END();
public:
void setUp();
void tearDown();
void Test();
};
#endif
3. TestCase.cpp 파일을 만들어서 다음과 같이 적는다.
#include "StdAfx.h"
#include "testcase.h"
CPPUNIT_TEST_SUITE_REGISTRATION(TestCaseExample);
void TestCaseExample::setUp()
{
}
void TestCaseExample::tearDown()
{
}
void TestCaseExample::Test()
{
CPPUNIT_ASSERT_EQUAL(10, 10);
}
이렇게 하면 끝.
테스트 후 메모리릭이 발생하는데 늘 생기는 것 같다.
48, 20, 44, 48 바이트의 메모리릭이 발생할거다.
다운로드 :