'CxxTest'에 해당되는 글 2건

  1. 2008/10/06 CxxTest 설정 방법
  2. 2008/05/22 CxxTest 매크로들
sw2008/10/06 18:15

CxxTest 설정 방법

1. 우선 파이썬을 설치를 합니다.(펄을 설치해도 됩니다.)

2. 파이썬의 PATH를 등록해줍니다.

3. CxxTest를 압축해제 후 놓고 싶은곳에 놓아 둡니다.
   저는 C:\ 에다가 놓았습니다.

4. VisualStudio에서 디렉토리를 등록 해 놓습니다.
   저는 현재 주로 작업을 하는게 VS2003이라서 이걸 기준으로 하겠습니다.
   <도구> -> <옵션> -> <프로젝트> -> <VC++ 디렉토리> -> <포함파일> 에서 "C:\cxxtest" 로 등록을 했습니다.


5. 아래의 내용을 타이핑 한 후 cxxtest폴더에 CxxTestMakeRunner.py로 저장을 해 놓습니다. 파일명이야 뭐 아무래도 상관없습니다.
   현재 프로젝트 경로상에서 파일명중에 뒤에 Test가 붙은 것들로 runner.cpp 파일을 만드는 것 같습니다.

====================================================================================================================

import os


def toStr(aList):

           return ' '.join(aList)


def main():

           testFiles = []

           for eachFile in os.listdir("."):

                     if os.path.isfile(eachFile):

                                lastestPeriod = eachFile.rfind(".")

                                fileName = eachFile[:lastestPeriod]

                                extension = eachFile[lastestPeriod+1:]

                                if fileName.endswith("Test"):

                                          print fileName, extension

                                          testFiles.append(eachFile)

                    

           files = toStr(testFiles)

           if files == '':

                     print "No Test Files... Make XxxText.xxx..."

           else :

                     cmd= "python c:\cxxtest\cxxtestgen.py --runner=ParenPrinter --gui=Win32Gui -o runner.cpp "+toStr(testFiles)                    

                     print cmd

                     os.system(cmd)


if __name__=="__main__":

           main()


====================================================================================================================

6. Visual Studio에서 환경설정을 합니다.
   <도구> -> <외부도구>-><추가>를 눌러서 툴을 등록합니다.
  
    제목 : Make CxxTest Runner
   명령 : C:\Python25\python.exe
   인수 : C:\cxxtest\CxxTestMakeRunner.py
   초기 디렉터리 : $(ProjDir)
  
   과 같이 등록을 해줍니다.
   "출력 창 사용" 을 체크를 해주어서 visual studio의 출력창에 결과가 보일 수 있게 해줍니다.


7. CString이나 MFC 관련 내용을 사용할 경우에는 위의 CxxTestMakeRunner.py만으로는 사용을 할 수가 없습니다.
   방법으로는 runner.cpp 파일을 변경해주던가 아니면 위의 스크립트를 변경해서 사용해야 합니다. 또는 테스트 하고자 하는 클래스 파일에 #include <stdafx.h>를 추가를 하는 방법도 있습니다.

   afx.h => MFC basic
   afxwin.h => MFC core and standard components
   afxext.h -> MFC extensions
   afxdtctl.h => MFC support for Internet Explorer 4 Common Controls
  
   각 헤더를 필요에 따라 runner.cpp 파일에 추가해 줘도 됩니다.
   아니면 위의 스크립트 중에
   cmd= "python c:\cxxtest\cxxtestgen.py --runner=ParenPrinter --gui=Win32Gui -o runner.cpp "+toStr(testFiles)
   이 부분을
   cmd= "python c:\cxxtest\cxxtestgen.py --runner=ParenPrinter --gui=Win32Gui --include=afx.h --include=afxwin.h -o runner.cpp "+toStr(testFiles)
   이런식으로 필요한 헤더를 추가해주는 방법도 있습니다.

   3가지 방법중에 필요에 따라서 적당한 걸 골라서 사용하면 좋을것 같습니다.


8. 테스트를 실행해 보면 테스트가 어떻게 되는지 볼 사이도 없이 창이 사라져 버립니다. 이를 수정하기 위해서는 cxxtestgen.py를 바꿔 주어야 합니다.
   cxxtestgen.py 에서 writeMain( output ) 함수를 찾습니다.

   output.write( ' return CxxTest::GuiTuiRunner<CxxTest::%s, CxxTest::%s>( argc, argv ).run();\n' % (gui, runner) )
   위의 부분을 아래와 같이 고쳐줍니다.
   output.write( ' int res = CxxTest::GuiTuiRunner<CxxTest::%s, CxxTest::%s>( argc, argv ).run();\n getchar();\n return res;\n' % (gui, runner) )


이렇게 해서 CxxTest를 사용하기 위한 설정이 끝났습니다.


by Redef ( http://www.redef.pe.kr )

참조 :
http://user.chol.com/~nya/doc/CnCPP/CxxTest/CxxTest4MSVC6setup.htm : CxxTest for MSVC6 setup
http://user.chol.com/~nya/doc/CnCPP/CxxTest/CxxTestMSVC6HowTo.htm : CxxTest for MSVC6 HowTo
http://aego.pe.kr/CxxTest.html : VC 6.0에서 CxxTest 활용
http://javawork.egloos.com/741731 : CxxTest 설정

==============================2008년10월6일 추가=============================
테스트 ui창이 필요없이 console창만이 필요하다 하실때는
CxxTestMakeRunner.py에서 --gui=Win32Gui 이부분을 제거 해줍니다.
cmd= "python c:\cxxtest\cxxtestgen.py --runner=ParenPrinter -o runner.cpp "+toStr(testFiles)

cxxtestgen.py에서 동일하게 writeMain(output) 을 찾아서

output.write( ' return CxxTest::%s().run();\n' % runner )

위의 부분을 아래와 같이 수정해 줍니다.

output.write( ' int ret = CxxTest::%s().run();\n getchar();\n return ret;\n' % runner )
Posted by redef

댓글을 달아 주세요

sw2008/05/22 15:21


CxxTest 매크로들

  • TS_FAIL(message)
    • 무조건 실패
  • TS_ASSERT(expr)
    • expr이 true인지 확인
  • TS_ASSERT_EQUALS(x, y)
    • x == y 인지 확인
  • TS_ASSERT_SAME_DATA(x, y, size)
    • 두 버퍼가 같은지 확인
  • TS_ASSERT_DELTA(x, y, d)
    • x와 y가 d의 범위내에서 동일한 확인
  • TS_ASSERT_DIFFERS(x, y)
    • x와 y가 같지 않은지 확인
  • TS_ASSERT_LESS_THAN(x, y)
    • x < y 인지 확인
  • TS_ASSERT_LESS_THAN_EQUALS(x, y)
    • x <= y 인지 확인
  • TS_ASSERT_PREDICATE(R, x)
    • R(x) 확인
  • TS_ASSERT_RELATION(R, x, y)
    • x R y 을 확인한다.
  • TS_ASSERT_THROWS(expr, type)
  • TS_ASSERT_THROWS_EQUALS(expr, arg, x, y)
  • TS_ASSERT_THROWS_ASSERT(expr, arg, assertion)
  • TS_ASSERT_THROWS_ANYTHING(expr)
  • TS_ASSERT_THROWS_NOTHING(expr)
    • 예외를 확인한다
  • TS_WARN(message)
    • 경고를 출력한다
  • TS_TRACE(message)
    • 정보메세지를 출력한다
Posted by redef
TAG CxxTest, TDD

댓글을 달아 주세요