CxxUnit은
CUT의 C++버전이라 봐도 약간 상통하리라 본다.(오래되기는
CxxUnit 이 더 오래되었던걸로 기억) Python 이나 Perl 의 코드제너레이터 스크립트를 이용, Runner화일을 만들어준다. 이를 컴파일하여 실행하면 테스트가 실행된다.
1002의 경우 요새
CxxUnit 을 사용중. 밑의 스크립트를 Visual Studio 의 Tools(일종의 External Tools)에 연결시켜놓고 쓴다. Tool 을 실행하여 코드제너레이팅 한뒤, 컴파일. (cxxtestgen.py 는
CxxTest 안에 있다.) 화일 이름이 Test 로 끝나는 화일들을 등록해준다.
~cpp
from os import *
from os.path import *
def toStr(aList):
return ' '.join(aList)
def main():
testFiles = []
for eachFile in listdir("."):
if isfile(eachFile):
lastestPeriod = eachFile.rfind(".")
fileName = eachFile[:lastestPeriod]
extension = eachFile[lastestPeriod+1:]
if fileName.endswith("Test"):
print fileName, extension
testFiles.append(eachFile)
'''cmd= "python cxxtestgen.py --runner=ParenPrinter --gui=Win32Gui -o runner.cpp "+toStr(testFiles)'''
cmd= "python cxxtestgen.py --runner=ParenPrinter -o runner.cpp "+toStr(testFiles)
print cmd
system(cmd)
if __name__=="__main__":
main()
단점이 있다면 테스트 상속이 안된다는 점이다. 개인적으로
MockObject 만들어 인터페이스 테스트 만든뒤
RealObject 를 만들어 테스트하는 경우가 많은 만큼 귀찮다. (테스트의 중복으로 이어지므로) 어흑.