2012-10-31 3 views
3

CppUnit은 JUnit 및 다른 XUnit 프레임 워크와 유사하도록 설계되었습니다.CppUnit - xUnit 기반 디자인의 장점과 단점?

장점/단점은 무엇입니까? 언제 이런 이유로 선택해야합니까?
유사성에 이점이없는 경우 다른 프레임 워크를 선호해야합니다. 쉽고 직관적으로 시작할 때 실제로 사용합니까?


장점로 시작합니다. 일부 도구로 더 잘 처리됩니까? 예를 들어 연속 통합 도구는 무엇입니까?

혼합 환경 (C# 및 C++과 같은 환경)에서 더 좋습니까?

단점 : 저는 빌드가 약간 더 복잡하기 때문에 다른 프레임 워크보다 플랫폼이 적다는 것을 알고 있습니다. 개인적으로 나는 (초보자를 위해) 컴파일과 링크 오류에 빠지기 쉽다는 인상을 받았다. (예를 들어 디버거에서) 실제 코드를 따르기가 어려울뿐만 아니라 함수와 함께 사용하는 것이 자연스럽지도 않다. (C 스타일 인터페이스).

답변

1

장점 :

CppUnit을의 주요 장점은 설치/테스트/분해의 xUnit의 패턴을 따른다는 것이다. 이 패러다임은 XUnit 경험을 가진 누구나 이해할 수 있습니다. 애트리뷰트 나 리플렉션 (매크로 나 자바 XUnit 프레임 워크처럼) 대신 매크로를 사용하는 것은 약간의 해결 방법이지만 실제로 부담 스럽지는 않다.

그리고 CppUnit 자체는 이식 가능합니다. TestRunner.DLL GUI는 전적으로 MFC로 작성되었으므로 Windows 전용이므로 명령 줄 버전은 Microsoft 특정 코드를 사용하지 않으며 많은 플랫폼에서 실행됩니다.

또한 매우 안정적입니다. 개발자는 수년 동안 거의 아무것도 해내 지 못했습니다. 핵심은 아무 것도 필요 없기 때문입니다. 그것은 한 가지를 잘합니다.

단점 :

단점은 불행하게도 그 최종 사용자 지원이 부족하다. 가장 큰 불만은 CppUnit을 IDE에 통합하는 좋은 도구가 없다는 것입니다. 내가 가장 심각하다고 생각하는 이유는 시험을하기 위해서는 규율이 필요하기 때문입니다. 단위 테스트를 어렵게 만드는 것은 테스트를 수행하지 않을 핑계로 사용됩니다.

Visual Studio에서 제대로 해석 할 수있는 테스트 실패 줄을 출력하기 위해 수동으로 형식을 추가 할 수 있습니다 (두 번 클릭하면 테스트에서 실패한 ASSERTion으로 이동합니다). 그러나이 도구에는 포함되어 있지 않지만, 이 사이트와 같은 사이트에서 외부에서 배워야합니다.

단위 테스트 스켈레톤 코드를 생성하는 IDE 플러그인을 작성할 수는 있지만 공개적으로 사용할 수있는 플러그인은 없다는 것을 알고 있습니다. 다시 말하지만, 이것은 개발자가 쉽게 이해할 수 있어야합니다.

통합이 없기 때문에 코드베이스에 CppUnit 프로젝트를 통합하는 데 대한 게시 된 지침이 없습니다. 따라서 시작하기가 매우 어렵습니다.

제대로 작동하지 않으면 여러 사람들이 팬텀 CppUnit 프로젝트 체크인/체크 아웃 문제로 인한 문제를보고합니다.

CppUnit은 특정 조롱 프레임 워크를 지원하지 않습니다. 대부분의 모의 프레임 워크가 리플렉션을 사용하여 개발 도상국을 고통스럽게 만드는 것처럼 C++은 항상 약간의 어려움을 겪고 있습니다.

대안 :

거기 밖으로 많은, 많은 C++ 유닛 테스트 프레임 워크가 있습니다. Googletest는 어떤 사람들로부터 좋은 평을받습니다. CppUnitLite는 칭찬을 많이하지만 아주 혼란스럽고 도움이되지 않습니다. CxxUnit은 서투른 파이썬 스캐닝 및 구문 분석 단계가 필요합니다. 문명화가 덜 된 시대에는 덜 우아한 무기입니다. 그리고이 공간에는 많은 상품을 제공하는 많은 상업적 플레이어가 있습니다.

매우 다양한 대안 목록을 보려면 http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B을 권하고 싶습니다.

아직 사용하지는 못했지만 Visual Studio 2012는 Microsoft 고유의 테스트 스위트 툴을 통합하여 기본 C++ 코드에서 사용할 수 있도록했습니다. 이전에는 .NET 통합을 통해서만 작동했기 때문에 대부분의 C++ 코드에서는 쓸모가 없었습니다. 코드 커버리지 통합을 비롯하여 테스트 된 코드를 강조 표시하고 테스트 범위의 차이를 보여주는 툴을 모두 갖추고 싶습니다.

결론 : 오늘부터 시작한다면 IDE와 완전히 통합 된 다른 XUnit 호환 테스트 프레임 워크를 선택할 것입니다. 우리가 CppUnit을 선택했을 때, 그것은 Visual Studio 6.0을위한 최고의 게임 이었지만 지금은 그저 함께 살고 있습니다.

관련 문제