여러분 중 누군가가 C++ 프로젝트에서 TDD를 사용하고 C# 및 Java와 같은 관리되는 언어와 비교하여 어떻게 작동하는지 알고 싶습니다. 그리고 C++ 프로젝트의 테스트를 자동화하기 위해 어떤 프레임 워크를 사용하고 있습니까?C++ 프로젝트에서 TDD가 가능한가/생산적입니까?
답변
테스트 기반 개발 어떤 언어로도 개발이 가능합니다. 언어에 맞는 올바른 테스트 도구와 방법이 필요하며 프로젝트에 맞춤형 테스트 인프라가 필요할 수도 있습니다.
나는 CppUnit (적어도 1.x)이 매우 열악한 프레임 워크 인 것을 발견했다. 이것은 C++ 언어로 Java/C# 관용구를 사용하는 것으로 보이며 STL 구성을 지원하지 않는다.
테스트 주도 개발 (C)의 좋은 예를 보려면 Wine 프로젝트를보십시오. http://test.winehq.org/data/은 다른 버전의 Windows, Wine 및 다른 버전에서 테스트 결과를 Wine 저장소에 표시합니다. 그들은 그들 만의 맞춤형 테스트 인프라를 가지고 있습니다.
사람들이 CppUnit을 계속 사용하지만 원래 작성자 (Michael Feathers)는 완전히 다시 작성했습니다 _Working Effectively With Legacy Code. _에서 간단하게 설명했습니다. _ 그의 수정 된 접근법은 Cpputest, UnitTest ++ 및 googletest에서 볼 수있는 매크로를 영리하게 사용합니다. –
두 가지 유용한 C++ 테스트 프레임 워크는 아직 언급되지 않은 것으로 보입니다. Boost test
및 Google Test
입니다.
+1 Google 테스트 용 – TheJuice
저는 최근 TDD를 사용하여 C++를 사용하여 개발 된 C# 프로젝트에서 옮겼습니다. 나는 그것을 꽤 두려워했지만 TDD로 C++을하는 것이 훨씬 즐겁고 C++로 과거 (비 -TDD) 경험에서 기억하는 것보다 코드가 훨씬 강력하다는 것을 알게되었습니다.
Google 테스트를 사용하고 있습니다. NUnit/MbUnit만큼 사용하기 쉽지 않지만 꽤 잘 작동하는 것 같습니다. Google 조롱 프레임 워크 http://code.google.com/p/googlemock도 있지만 아직 사용하지 않았습니다.
UnitTest ++는 대다수의 프로젝트에서 사용했습니다. –
C++ 및 TDD에서 비디오 시리즈를 확인하십시오. http://www.vimeo.com/album/254486/video/13240481 –