E D R , A S I H C RSS

Cxx Test

http://cxxtest.sourceforge.net
C++ � 경우는 언어차��서� 리플랙션� 지�하지 않기 때문� 테스트를 추가하는 부분� �바나 파�� 등� 비해 �당히 귀찮다. 그� 대한 대안으로 CUT 등� C UnitTestFramework � 경우 외부�서 Perl 등으로 작성한 스�립트언어로 테스트실행과 관련한 Runner 를 코드제너레�팅하는 방법� 쓰고 있다.

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 를 만들어 테스트하는 경우가 많� 만� 귀찮다. (테스트� 중복으로 �어지므로) 어�.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:04
Processing time 0.0043 sec