테스트 주도 개발 by googletest

테스트 주도 개발(Test-Driven Development by Example, 인사이트, 켄트 벡 지음, 김창준,강규영 옮김)에 나오는 Money 예제를 연습 겸 googletest로 따라해 본 글이다. 모든 내용이 있는 것은 아니며 프로젝트를 실제 어떻게 구성하는지에 대한 내용 중심이다.

책을 따라가며 최대한 코드를 그대로 옮기다 보니 C++도 Java도 아닌 정체 불명(?)의 민망한 코드가 되기도 했고 5장을 넘어 6장을 하던 중에 ‘상당히 피곤한 일이라는 생각’도 갑자기 들어 그냥 여기서 관두기로 했다. 그래서 만들어 둔 것만 올리고 마무리 하련다. 아무튼 이런 식으로 구성한다는 것만 이해하면 그걸로 충분. 코드가 이상하다는 건 그냥 잊기 바란다. 흠흠.

You may also like...

  • xap

    포스팅 잘 보았습니다.

    예제에서는 테스트 프로젝트에 Dollar.h 만 사용하는데
    만약 Dollar.cpp가 추가되고 여기서 구현이 이루어 진다면
    테스트 프로젝트에 h, cpp 파일 모두를 추가해야 하나요?

    프로젝트에 h, cpp 파일이 많으면 테스트 프로젝트에도 똑같이 추가해야 한다면 관리는 어떻게 하는거죠?

    • Surpreem

      아시다시피 C++에서는 컴파일을 하려면 객체에 대한 정보가 모두 있어야 합니다. 그러므로 글 내용과 달리 cpp 파일에 클래스 내용을 구현하면 일반적으로는 테스트 프로젝트에 구현 파일을 추가해야 합니다. 헤더 파일은 #include 문으로 포함하므로 굳이 프로젝트에 추가하지 않아도 됩니다.

      다만 주의할 것은, 여기서 프로젝트에 파일을 추가한다는 것은 실제로 구현 파일을 복사해서 테스트 프로젝트의 디렉터리에 넣는다는 의미가 아닙니다. 물리적으로 파일을 복사해 추가하는 게 아니라 테스트 프로젝트에서 구현 파일을 참조해 빌드할 수 있도록 프로젝트 정보에만 추가합니다. 이때 테스트 코드와 구현 코드를 쉽게 구분하도록 필터를 사용해 나눠 주면 보기에도 더 좋겠죠. 만약 구현 내용을 DLL 형태로 만들어 테스트 프로젝트에서 링크한다면 구현 파일을 테스트 프로젝트 정보에 추가할 필요도 없습니다. 하지만 원래 DLL로 만들게 아니라면 이렇게 하는 것도 꽤나 귀찮기 때문에 일반적으로는 코드를 직접 참조하는 방법이 훨씬 간편합니다.