일단 eclipse을 종료하고 작업할 workspace로 이동한다. workspace 안에 .metadata라는 디렉토리 안에 .plugins 디렉토리로 이동한다. 그 밑에 각종 dialog에 대한 설정 정보가 저장되어 있다. 우리가 원하는 것은 dialog의 크기이다.
grep을 이용하여 WIDTH나 HEIGHT로 검색을 한다. 그러면 해당 xml파일이 검색될 것이다. 해당 파일에서 WIDTH와 HEIGHT로 검색하여 적당한 값을 수정하면 된다.
사실 알고 보니 별거 아니다. 그냥 사용하면 된다. 그리고 값을 넘겨주고 받는 부분이 조금 복잡하지만 별거 없다. 문자열 처리하는데 힌트를 더 주면 string_size 인자는 nsis에서 사용하는 문자열 할당 크기이다. 즉, 모든 문자열 할당 크기는 기본값으로 string_size을 사용한다.
CUnit를 작성하고 오랜만에 작성해봅니다. UnitTestC++는 최재훈님의 "테스트 프레임워크 도입하기"라는 글을 읽고 선택하게 되었습니다. 해당 글에는 설치와 설정에 관한 내용이 없어서 추가로 필요한 내용을 정리해볼려고 합니다. 처음 설치와 설정에 관한 내용이고, 테스트에 대한 노하우나 방법론에 대해서는 다루지 않습니다. 그리고 아래 글은 Windows환경에서 Visual Studio 2005(이하 VS 2005)를 고려해서 작성되었습니다. 물론 Visual Studio 2003(이하 VS 2003)이나 Visual Studio 2008(VS 2008)에서 가능합니다. UnitTestC++은 Win32, Linux, Mac OS X를 지원합니다.
먼저 UnitTest++를 다운 받아서 특정 폴더에 압축을 푼다. 독립적으로 구성된 SDK 폴더나 혹은 같은 솔루션의 프로젝트로 구성합니다.
압축을 푼 UnitTest++ 폴더에 가면 VS 2003과 VS 2005용 솔루션 파일이 있다. 자신이 사용하는 솔루션 파일을 열어서 모든 프로젝트 빌드한다. Batch build를 사용하면 편리하다. VS 2003과 VS 2005 둘다 사용하고 있다면 각각 솔루션 파일을 열어서 빌드하면 된다. 그러면 각각 다른 라이브러리 이름으로 생성된다.
UnitTest++ 폴더에서 release와 build 폴더를 보면 VS 2003이면 UnitTest++.vsnet2003.lib가 VS 2005이면 UnitTest++.vsnet2005.lib가 생성된 것을 확인했다면 설치가 완료된 것이다.
이제 UnitTest++를 테스트 프로젝트에 적용해보자. 이때 필요한 기본 환경 설정이 include 폴더와 library 폴더 위치를 지정하는 것이다. 아래 설정은 본인의 설정 취향이므로 개인적인 취향에 맞춰서 설정하면 된다.
VS 2005라고 가정해서 하며 반드시 모든 설정은 Debug와 Release에 동시에 설정하며 설정 대화상자에서 Configuration이 All Configurations인지 확인한다.
프로젝트 설정에서 Configuration Properties>C/C++>General에서 Additional Include Directories에 "C:\SDK\UnitTest++\src\" 입력.
사용할 라이브러리 지정은 Configuration Properties>Linker>Input>Additional Dependencies에 "C:\SDK\UnitTest++\$(ConfigurationName)\UnitTest++.vsnet2005.lib"를 입력한다.
다음은 UnitTest++를 위한 애드온 프로그램인 vutpp를 설치한다. 설치 프로그램이므로 다운받아서 바로 설치하면 된다.
설치가 끝나서 VS 2005를 실행하면 상단 메뉴에 "VUTPP"가 생성된다. VUTPP메뉴에서 UnitTestBrower를 실행하면 vutpp 프로그램이 실행되면 적당한 위치에 넣으면 된다.
vutpp에서 UnitTest++를 사용하기 위해서는 VUTPP_UNITTEST++라는 전처리 설정이 프로젝트에 필요하다. 이는 프로젝트 속성에서 Configuration Properties>C/C++/Preprocessor에서 Preprocessor Definitions 항목 마지막에 VUTPP_UNITTEST++를 추가하면 된다. 이것 역시 Release와 Debug에 추가하면 된다.
테스트할 코드를 작성하면 된다.
테스팅 코딩
테스트할 대상이 되는 함수나 객체들은 반드시 DLL이나 정적 라이브러리로 되어 있어야 한다. 테스트 프로젝트에서 해당 DLL이나 정적 라이브러리를 지정하여 사용할 수 있다.
테스트 코딩 예제는 http://unittest-cpp.sourceforge.net/money_tutorial/를 살펴보기 바란다.
vutpp에서 작성된 테스트 코드를 실행하기 위해서 추가 작업이 필요하다. 즉 vutpp가 자동으로 단위 테스트를 불러올 수 없다. 물론 앞에 전처리기에 VUTPP_UNITTEST++를 선언함으로서 단위 테스트 목록정도는 가져올 수 있지만 이를 바인드해서 호출 결과를 가져올 수는 없다.
이를 위한 테스트 프로젝트의 main함수가 있는 파일에 아래 코드를 추가해야 한다.
#include "TestReporter.h"
using namespace UnitTest;
class VUTPP_Reporter : public TestReporter
{
private:
HANDLE m_WritePipe;
<application path>은 네트워크를 사용하거나 혹은 접속요청을 처리하는 응용프로그램의 절대 경로를 사용한다.
<rule name>은 방화벽 제어판 목록에 표시되는 예외 목록에 표시되는 제목이다.
반환값
위의 두가지 함수를 정수형의 상태 값을 스택의 탑으로 반환한다.
가능한 상태 값으로:
0: 성공적으로 수행
<0: 에러 발생(이 값은 HRESULT 에러 코드로 MSDN에서 자세한 정보를 찾아볼수 있다.)
>0: 절대 반환되지 않은 값( 양의 HRESULT 값은 성공을 의미한다)
댓글을 달아 주세요