2010-07-31 5 views
3

괜찮습니다. 나는 C++로 화면 스크래핑 프로그램을 끝냈다. 이제 어떻게 유닛 테스트를 할 수 있습니까? 어디서부터 시작해야합니까?단위 테스트 .cpp How-To

+1

google "C++ unit testing" – Andrey

+6

Google은 오래된 학교입니다. 이제는 stackoverflow 및 사람들에게 google에 대해 묻습니다 - 그것의 호출 된 위임 (설계 패턴조차도). – IAdapter

+1

* CppUnit을 선택하지 마십시오. 이름이 마음에 들지만. Google Test 또는 UnitTest ++와 같은 최신 버전을 탐색하십시오. –

답변

1

CppUnit은 단위 테스트를위한 JUnit의 C++에 해당합니다.

+0

하지만 꽤 어색합니다. 원래 저자는 많은 배관을 정의 할 필요가 없도록 매크로를 사용하는 새로운 시스템을 만들었습니다. 이 접근법은 더 최근의 C++ 단위 테스트 프레임 워크에서 복사되고 사용됩니다. –

+1

예 im 지금 cppUnit을 사용합니다 – svenus

9

코드를 테스트하는 데 도움이되는 여러 가지 단위 테스트 프레임 워크가 있습니다.

체크 아웃 : 당신이하여 응용 프로그램의 흐름을 확인 도움이됩니다 http://code.google.com/p/googlemock/http://code.google.com/p/googletest/

구글 모의 (구글 C++ 비웃음 프레임 워크)에서 확인할 수있다 구글 테스트 (구글 C++ 테스트 프레임 워크) 클래스에 대한 mock 객체 만들기. GoogleTest 프레임 워크는 사용자의 요구에 맞지 않을 경우

(당신이 http://en.wikipedia.org/wiki/Mock_object에서 모의 ​​개체에 대한 읽어야한다), 당신은 또 다른 훌륭한 대안이 CxxTest (http://cxxtest.tigris.org/)라고합니다.

행운을 빈다.

탈.

+1

UnitTest ++도 매우 좋은 것으로 들었습니다 : http://unittest-cpp.sourceforge.net/ –

+0

thanks Tal! CPPUNIT를 이미 내 netbeans에 사용하고 있습니다. – svenus

4

기본적으로해야 할 일은 테스트 할 모듈/클래스를 가져 와서 나머지 시스템과 분리하고 외부 클래스/API와의 상호 작용을 시뮬레이트 (가짜) 한 다음 그것이해야 할 일을 했어.

일반적으로 "모의 객체"를 사용하여이 시뮬레이션을 수행합니다. 테스트 (SUT)에서 시스템 (모듈/클래스)에 대한 다양한 작동 조건을 실행하기 위해 모의 객체의 동작을 고안합니다. 기존의 모의 객체 프레임 워크를 사용할 수도 있고, SUT가 사용하는 모든 인터페이스를 구현하는 객체 나 함수를 생성하여 간단히 "자신 만의 모의 객체"를 굴릴 수도 있습니다.

모의 개체를 SUT에 삽입하는 방법을 알아야합니다. 예를 들어 SUT에 멤버 변수 인스턴스가있는 경우 SUT의 하위 클래스를 만들고 "SetMemberObj (aMockInstance)"메서드를 추가하여 mock 객체를 설치할 수 있습니다. SUT가 전역 함수를 사용한다면, 아마도 동일한 서명을 가진 함수를 생성 할 수 있으며, 테스트 함수를 실제 함수를 포함하는 .lib과 연결하지 말아야합니다. 그러면 SUT가 가짜 함수를 호출하게됩니다.

또한 SUT의 동작을 확인하는 방법을 결정해야합니다. 간단한 경우에는 메서드의 반환 코드를 확인할 수 있지만 좀 더 복잡한 상황에서는 모의 개체를 쿼리하여 SUT에서 호출 한 방법을 확인해야합니다.

SUT를 실제로 호출하는 방법을 알아내는 것도 어려울 수 있습니다. 내가 일반적으로하는 일은 콘솔 출력을 만드는 것입니다 .exe는 다양한 방법으로 SUT를 인스턴스화하고 구동하여 stdout 및/또는 리턴 코드를 통해 오류를 나타냅니다. 단위 테스트 프레임 워크는이 작업에 매우 유용 할 수 있지만 완전히 필요하지는 않습니다. 여기

+0

감사합니다! – svenus

1

는 하나를 선택하는 것이 오히려 위협이 될 수 있도록 가능한 C++ 유닛 테스트 프레임 워크가 많이 있습니다. Here은 여러 프레임 워크를 평가하고 C++ 단위 테스트의 많은 예제를 포함하는 매우 훌륭한 일련의 블로그 게시물입니다.

+0

실제로 너무 오래 되었기 때문에이 비교의 큰 팬이 아닙니다. 기존 프레임 워크에 대한 그의 불만 중 일부는 개입 후 몇 년 동안 해결되었습니다 (예 : boost :: test의 이전 스위트 부족). –