뭔가 좀 많이 늦은 감이 있지만(…), rein이 사용하는 유닛 테스트 프레임웍 중 하나인 UnitTest++의 VC++ 애드인을 발견하고 테스트 ((UnitTest++외에도 BoostTest나 CppUnitLite2(UnitTest++의 메인 커미터가 CppUnitLite2를 한동안 관리했다) 혹은 CppUnitLite도 지원한다)).
이런 GUI add-in을 VS 2005에 통합할 수 있게 된다. (테스트에 사용된 것은 전에 포스팅했던 Closure 구현)
사용하기 위해 필요한 것은 다음과 같다.
- 필요한 툴들 — VS 2005, UnitTest++, VisualUnitTest++ 애드인 + 샘플 ((http://code.google.com/p/vutpp/ 에서 다운로드 받을 수 있다. 프로젝트 메인 페이지이기도 하다.))
- 필요한 파일들 — UnitTest++.lib 과 VisualUnitTest++의 샘플에 들어있는 TestReporter 구현 ((그냥 VUTPPBind.cpp를 복사하면 충분하다. 이게 없으면 애드인을 활성화할 때 “Cannot create tool알 수 없는 에러메시지를 보게된다 -_-;;))
- 필요한 프로젝트 설정 — 테스트들이 있는 프로젝트의 C++ Preprocessor 정의에 VUTPP_UNITTEST++ 추가
- DLL 로 프로젝트(테스트가 있는)를 빌드할 것
이런 작업들을 수행한 후에 VisualStudio 애드인 메뉴에서 테스트를 활성화해서 테스트하면 OK.
실행 시간이 긴 테스트가 많다면 같이 도는게 좀 많이 귀찮아지는데 그런 염려가 사라져서 무척 좋다. 시각적으로 즐겁다는 점도 무시할 수 없고 :)
앞으로 해야할 것
CC.Net 에서는 커맨드 라인에서 / 특정 리포터(XML) 로 테스트 결과를 출력하고 응용 프로그램이어야 한다. 그래서 테스트 프로젝트 자체도 .lib + .exe / .dll (reporter 용의) 분리해야하나? 내일 잠깐 회사를 들리거나 월요일 출근 후에 테스트 해봐야할 듯. ((근데 생각해보니 DLL Export로 테스터의 실행 직전 형태를 export하면 테스트 용 프로젝트가 2개여야 할 필요는 없을 듯…))
ps. 근데 모든 테스트가 성공했는데 왜 GUI툴이 붉은 색으로 나올까? 댓글로 남긴 것 처럼 테스트가 0개인 프로젝트 때문에 발생한 일. 그 프로젝트에는 DLL로 나온 진입점이 없어서 실행할 수는 없으니 오류라고 판단한 듯 하다. 그걸 수정하니 저런 녹색 실행화면을 볼 수 있었다.
붉게 표시되는 원인을 발견.
원인: 테스트가 없는 라이브러리 프로젝트에도 VUTPP_UNITTEST++ 을 정의해줬었다.
결과: 그래서 거기엔 export된 심볼이 없어서 제대로 실행되지 못해서 오류로 간주한 모양.
해당 프리프로세서 정의를 없애서 해결. 이젠 JUnit 부럽지…(아직 부럽긴함)않은 환경이 되어가는듯함
TDD TDD ㅇㅅㅇ!!
Time-Division-Multiplexing
Telecommunication-Device-for-Deaf 라거나
(…)
이클립스 JUnit에서는 테스트가 다 통과하면 녹색이 들어오는데 말이죵^
얘도 나오는데, 내가 뻘짓해서(TEST 0개인 프로젝트 생성) 망했지[..]
녹색바가 나오는 것으로 다시 캡쳐.