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 설정
테스트 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 )
댓글을 달아 주세요