목록CppUnit (8)
Dharma
기본적으로 cppUnit 에서 쓰이는 main 함수는 Text 모드 일때는 동일합니다. 각각의 세부 정보까지 표시하게 만든 버젼입니다. 다음부터 cppUnit Test Project 를 작성할때는 이부분을 복사해서 main 부분을 구성하면 똑같게 사용이 가능합니다. #include #include #include #include #include #include int main (int argc, char * argv[]) { CPPUNIT_NS::TestResult controller ; CPPUNIT_NS::TestResultCollector result ; controller.addListener(&result); CPPUNIT_NS::BriefTestProgressListener progress ;..
드디어 대망의 cppUnit 과 CruiseControl.NET 과의 결합입니다. 일단은 개념만 다루기로 하고 다음 포스트에서 프로젝트를 하나 하나 생성해 나가면서, SVN , CI , Schedule , TDD , IssueTracker 까지 적용해서 하나의 프로젝트로 만드는 포스팅 할 예정입니다. (우리 회사에서 적용하고 있는 방법론이기도 합니다, 비용은 인건비만 들고 실용주의 시스템 구성에 돈이 안드는 방법론을 맛볼 수 있습니다.) 저는 맘대로 그 방법을 도입한 형태를 실천주의 구성이라고 합니다 ㅎㅎ 지금까지 cppTest 프로젝트를 하면서 , 화면에 (콘솔) 테스트 결과가 출력되는 형태까지 봐 왔을것입니다. 이제부터 CruiseControl.NET 의 웹 대쉬보드 에 테스트 결과를 출력하게 해서 ..
지금까지 CookBook 의 예제를 따라서 하시다 보면 드는 의문이 있을 것입니다. 원칙대로 따라서 소스코드를 친 다음에 나온 결과물을 실행하면 . OK 라고 덜렁 나오는 것을 볼 수가 있을것입니다. NUnit 을 써보신 분들은 그 화려한 GUI 나 , TextMode 일때에도 나오는 그 많은 정보들이 하나도 나오지 않습니다. 심지어는 내가 무엇을 테스트 하는지에 대한 정보조차 없습니다. CppUnit 상당히 실망스러울 수밖에 없었습니다. 하지만 없을리가 없지 않습니까 ㅎㅎ , 그래서 조금 조사해보니 답이 나오더군요. cppTest.cpp 만 바꿔 주면 됩니다. int main(int argc , char **argv) { // 결과값을 저장하기 위한 매니저와 콘트롤러 성격을 선언해줍니다. CPPUNIT..
Suite 테스트 케이스를 한꺼번에 몰아서 돌릴려고 하면 , Suite 가 필요합니다. 정확히는 TestSuite 이지요. 전 포스팅에서 한개체를 돌리는 경우를 봤으니 이번에는 한번에 돌리는걸 알아 보도록 하죠. cppTest.cpp #include int _tmain(int argc, _TCHAR* argv[]) { CppUnit::TestSuite suite; CppUnit::TestResult result; suite.addTest( new CppUnit::TestCaller( "testEquality", &ComplexNumberTest::testEquality ) ); suite.addTest( new CppUnit::TestCaller( "testAddition", &ComplexNumberT..
그냥 컴파일 하면 에러가 발생합니다. > g++ -o test test.cpp -lcppunit > ./libcppunit.so: undefined reference to `dlclose' > ./libcppunit.so: undefined reference to `dlopen' > ./libcppunit.so: undefined reference to `dlsym' > collect2: ld returned 1 exit status > make: *** [test] Error 1 이런 에러 인데 , 기존의 윈도우 체제랑은 달라서 조금 당황합니다. 침착하게 -ldl 옵션을 link 옴션에서 추가해 주시면 무리 없이 컴파일 됩니다.
Fixture 는 Test Case 들을 모아놓구 한꺼번에 실행 시킬때 편리하게 쓸 수 있는 클래스 입니다. 여러 XUnit 프레임 워크를 찾아보시면 Fixture 는 대게 setUp() 과 tearDown() 두가지 메서드를 지원한다는 것을 아실 수 있을 것입니다. 즉 다시 설명하자면, 여러개의 테스트 메서드에서 공통적으로 필요한 준비물이 있다면 (예를 들자면 DB에 접속 한다던지 , 아니면 아래 예제의 경우처럼 복소수 여러개를 미리 준비한다 던지) 이렇게 '미리' 준비하는 부분이 setUp() 메서드 이고, setUp() 에서 설정한 내용을 해제 한다던지 메모리를 지운다던지 DB 접속을 끊는다던지 하는 마무리 작업을 해주는 곳을 tearDown() 이라고 합니다. - 쉽게 말하자면 constructo..
CppUnit 을 공부하는 와중에 요리책 (Cookbook)을 따라하면서 한글로 좀 정리를 할 필요가 있어서 정리중입니다. 원래 글은 CookBook 을 직접 보시면 되시고 저는 저의 입장이 많이 반영된 글입니다. 환경 : .NET 2005 의 VC8.0 간단한 테스트 케이스 - Simple Test Case 지금부터 복소수(complex) Class 를 만들어 볼까 합니다. 이를 TDD (Test Driven Development)를 이용해서 작성할 것입니다. 처음에 프로젝트를 생성합니다. 일단 GUI 버젼을 빼고 Text 버젼으로 시작해보지요. VS2005 에서 파일 - 새로만들기 - 프로젝트 를 선택하시고 Visual C++ 섹션 - Win32 - Win32 콘손 응용 프로그램 으로 새 콘솔용 프로..
컴파일 하면 TestRunner 쪽에서 에러가 발생합니다. 사실 TestRunner 없어도 cppunit 안에 Text 형식의 TestRunner 가 포함되어 있긴 하지만 (이걸 사실 제일 많이 씁니다) 그래도 안되는게 있으면 짜증이 나지요. 만지작 거리다 보니까 CPPUnit 쪽 위키에서 해결방안이 있더군요. http://cppunit.sourceforge.net/cppunit-wiki/BuildingCppUnit1 ('' 여기를 참조하시면 되고요. 실제로 수정하는 부분은 #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids 여기서 7.0 인 부분을 8.0 으로..