[CxxTest] 소개 - 단위(유닛)테스트를 위한 C++용 라이브러리
개발 2007. 8. 30. 14:50저자 : hanburn
날짜 : 2007.08.30
환경 : VS-2003, CxxTest, Python
단위테스트를 클래스를 작성하고 클래스단위로 테스트 모듈을 만들어 두면, 추후에 수정을 가해가 할 때 조금 편리하게 작업을 할 수 있게 된다. 자바쪽에서는 JUnit이라는 라이브러리를 이용하고 C++ 쪽에서는 이것을 포팅한 CppUnit 이라는 것이 있다. 그런데 CppUnit 이라는 것이 사용하기가 좀 불편한 감이 있다. 그래서 조금 가볍고 사용이 쉬운 CxxTest라는 것을 소개한다.
소스받는곳 : http://cxxtest.sourceforge.net
기본사용법 : http://cxxtest.sourceforge.net/guide.html
CxxTest를 사용하기 위해서는 Python을 설치하는게 좋다. 왜냐하면, python 스크립트 중에서 cxxtestgen.py라는 스크립트가 포함되어 있는데, 이 스크립트가 testcode를 만들어 주기 때문이다. 즉, CxxTest와 궁합이 잘 맞는다고 할 수 있다.
컴퓨터에 Python이 설치가 않되었다면 먼저 설치부터 하도록 하자.
파이선받기 : http://www.python.org
파이선은 받아서 설치만 하면 되니까 별다른 설정없이 그냥 설치하면 된다. 필자는 C:\밑에 그냥 설치를 하였다. 설치된 폴더에 보면 cxxtestgen.py라는 파이선 스크립트 파일이 보일 것이다. 내용이 꽤 긴 스크립트 파일이다. 이것이 용도는 파일을 열어보면 알겠지만, 테스트용 소스파일을 생성해주는 역할을 하는데, 옵션이 꽤 된다. 그래서 좀금더 편리하게 하기 위해서 다음과 같은 파이서 스크립트를 더 생성한다. (출처는 인터넷에서 구했다. )
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 cxxtestgen.py --runner=ParenPrinter --gui=Win32Gui -o runner.cpp "+toStr(testFiles)
cmd= "C:\Python25\python.exe C:\Python25\cxxtestgen.py --runner=ParenPrinter --gui=Win32Gui -o runner.cpp "+toStr(testFiles)
print cmd
os.system(cmd)
if __name__=="__main__":
main()
대충보면 폴더에서 파일을 찾아서 확장자 전에 Test 라는 이름이 들어가는 파일을 찾아서 cxxtestget.py 스크립트 파일에 몇가지 옵션과 함께 넘겨서 테스트 소스를 생성해주는 역할이다.
위의 내용을 MakeCxxTest.py 라는 이름으로 파이선이 설치된 폴더(C:\Python25)에 생성을 해 놓는다.
다음으로는 우리가 사용할 VS2003에서 방금 만든 MakeCxxTest.py를 호출(실행)할수 있도록 간단하게 환경설정을 해보도록 하자.
메뉴에서 도구 -> 외부도구를 누르면 뜨는 창에 아래처럼 추가를 한다.
제목을 써주고, 명령과 인수를 각자 환경에 맞추어서 설정해주면 된다. 그리고 오류내용을 보기 쉽게 “출력창사용”에 체크를 해주면 된다. 요렇게 간단하게 설정하면 CxxTest를 사용할 준비가 된된 것이. ^^
위에보면 Run Cxx Test Runner 라는 명령도 추가를 해주었는데, 별로 필요는 없다. 왜냐하면, 나중에 테스트 프로젝트를 실행 프로젝트로 하고 실행을 하는 것과 같기 때문이다. 개발시에 그냥 실행프로젝트를 설정해놓고 개발하는 것이 더 편리한 것 같더라. VS-2003의 개발환경에 익숙하고 단축키에도 익숙하므로.. 단축키 얘기가 나왔으니, 위의 명령을 단축키로 할당해 놓는 것도 편리하다.