목록TDD (9)
Dharma
지금까지 CookBook 의 예제를 따라서 하시다 보면 드는 의문이 있을 것입니다. 원칙대로 따라서 소스코드를 친 다음에 나온 결과물을 실행하면 . OK 라고 덜렁 나오는 것을 볼 수가 있을것입니다. NUnit 을 써보신 분들은 그 화려한 GUI 나 , TextMode 일때에도 나오는 그 많은 정보들이 하나도 나오지 않습니다. 심지어는 내가 무엇을 테스트 하는지에 대한 정보조차 없습니다. CppUnit 상당히 실망스러울 수밖에 없었습니다. 하지만 없을리가 없지 않습니까 ㅎㅎ , 그래서 조금 조사해보니 답이 나오더군요. cppTest.cpp 만 바꿔 주면 됩니다. int main(int argc , char **argv) { // 결과값을 저장하기 위한 매니저와 콘트롤러 성격을 선언해줍니다. CPPUNIT..
Helper Macros TestRunner 에서 봤듯이 Fixture 에는 Static 함수는 suite() 가 필요합니다. 하지만 이것을 매번 작성하다보면 , 내용이 귀찮고, 반복적으로 해야 하고 그러다 보면 실수를 유발하게 됩니다. 그래서 이부분을 편리한 매크로로 만들어서 쓰게 할 수 있습니다. 기존의 파일에서 #include 를 추가하면 macro를 쓸 수 있게 해줍니다. CPPUNIT_TEST_SUITE ( ComplexNumberTest) ; ('' 이것을 선언해주면 suite 를 쓰겠다고 선언하는 것입니다. suite 에 추가해줄 함수들을 추가하고요 CPPUNIT_TEST (testEquality ) ; CPPUNIT_TEST (testAddition ) ; 그리고 suite 선언이 끝났다고..
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..
'테스트 주도 개발' 책에서 또 관심을 끌었던 부분입니다. 마치는 글을 마틴 파울러가 장식을 했군요. 그 부분도 올려봅니다. 테스트 주도 개발에 대해 설명하기 어려운 것 중 하나는 TDD를 하면 돌입하게 되는 정신상태다. C3 프로젝트에서 랄프 베티(Ralph Beattie)와 함께 했던 세션을 기억한다. 우리는 복잡한 지불 조건을 구현해야만 했다. 랄프는 그걸 여러 개의 테스트 케이스로 쪼갰고, 우리는 그것들이 작동하도록 하나씩 접근했다. 꾸준히 서두르지 않으면서 진행했다. 서두르지 않았기 때문에 느린 것처럼 보였지만, 얼마나 많은 일을 했는지 뒤돌아 보면 , 작업시의 느긋한 느낌에도 불구하고 진행 속도는 매우 빨랐다. 우리가 가진 화려한 도구들에도 불구하고, 프로그래밍은 여전히 어렵다. 동시에 여러 ..
테스트 주도 개발 책을 읽으면서 그 책에서 제일 괜찮다고 생각하는 부분중에 한 부분입니다. TDD 개념을 가장 쉽게 접근할 수 있도록 만든 예제인데 무단으로 퍼서 소개할까 합니다. - 사실 본 책 안에 있는 내용은 좀 난해한 편이고 , 이 예제가 더 이해하기 쉽습니다. - 부록 B . 피보나치 이 책의 검토자 중 한 명의 질문에 대한 답으로 나는 피보나치 수열을 테스트 주도로 개발해 올렸다. 몇 명의 검토자들이 이 예를 보고 TDD가 어떻게 작동하는지 이해하는 데 큰 도움이 되었다고 했다. 하지만 이 책에 사용된 예제를 피보나치 예제로 바꾸기에는 피보나치 예제가 너무 짧고, 다양한 TDD 기술을 충분히 보여주지도 못한다. 이 책의 주 예제를 읽은 후에도 여전히 번쩍이는 깨달음을 얻지 못했다면 여기를 잠깐..
제목: 테스트 주도 개발 원제: Test - Driven Development by Example 지은이 : 켄트 벡 옮김 : 김창준 , 강규영 테스트 주도 개발 ! 참 요즘들어 많이 듣는 말 입니다. 하지만 실행하기가 그리 쉽지 않은 부분이기도 하지요. 원인이 무엇인가 조금 생각해보면 알 수 있습니다. 결국 '실천' 이 관련되었기 때문입니다. 자신이 익숙한 것만 하려고 드는 개발자의 특성상 무엇인가 새로운 것을 해보기가 쉽지가 않은 것이 또한 큰 이유중에 한가지 입니다. 저는 이책을 지인의 추천으로 가지고 있었는데 서문을 조금 읽어본 후에 계속해서 가지고 있었습니다. 그리 흥미를 못느꼈기 때문입니다. 좋은 이야기가 많이 쓰여져 있지만 실천하기 힘든 역시나 일반적인 서적하고 비슷한게 아닐까 라는 편견을 ..
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 으로..