2009-04-03 7 views
0

기존 C++ 프로젝트에 대한 단위 테스트를 설정하려고합니다.C++에서 단위 테스트 및 조롱 작고 가치 같은 클래스

다음은 설정입니다. Google 시험을 포함하는 Google Mock을 선택했습니다. Visual Studio Solution에 다른 프로젝트 (Tests)를 추가했습니다. 테스트 할 단위는 Main이라고하는 다른 프로젝트에 있습니다. 계획은 테스트 할 각 cpp 파일을 테스트 프로젝트에 추가하는 것입니다. Tests 프로젝트는 Main의 모든 헤더 파일에 액세스 할 수 있습니다.

하나의 cpp 파일을 Tests 프로젝트에 추가했는데 컴파일되지만 링커 오류가 발생합니다. 대부분은 CTimeValue라고하는 COleDateTime에서 파생 된 클래스 때문입니다. 테스트중인 유닛에는 값에 의한 전달 CTimeValue 매개 변수가있는 메소드가 있고 일부 CTimeValue 속성도 선언됩니다.

격리되어있는 UUT를 테스트하고 모든 종속성에 대해 가짜와 가짜를 사용하고 싶습니다. 나는 CTimeValue로 어떻게하는지 보지 못한다. 값으로 사용되며 가상 메서드가 포함되어 있지 않지만 여전히 매우 복잡하며 별도의 단위 테스트를 받아야합니다.

CTimeValue는 프로젝트에서 이와 비슷한 많은 클래스 중 하나입니다. 이러한 사용자 정의 유형을 사용하는 클래스의 테스트를 어떻게 분리 할 수 ​​있습니까?

건배, 펠릭스

답변

3

때로는 단순히 물건을 조롱 할 수없는 경우가 있습니다. 이 경우 해당 클래스에 대한 포괄적 인 테스트 (CTimeValue)를 수행하고 다른 클래스 테스트에서 해당 클래스의 테스트를 하위 테스트로 실행해야합니다.

+0

답변을 주셔서 감사합니다. Mock은 가치 의미론과 잘 작동하지 않는 것 같습니다. – TheFogger

0

mock 객체를 사용하면 UUT에서 사용하는 메소드 서명을 추가하기 만하면 google mock을 사용하여 mock을 만들 수 있습니다. 물론 CTimeValue 클래스에 대한 별도의 테스트 슈트가 필요합니다. 그렇다면 실제 객체를 링크하는 것이 더 좋습니다. 모의 객체를 생성하기위한 인터페이스 클래스를 만드는 것이 가치가 있는지 결정해야합니다.

0

가짜는 서로를 위해 서비스를 제공하는 객체로 작업하는 데 가장 적합합니다. 모의의 기대치는 관계를 설명합니다. 값 객체를 조롱하는 데는별로 중요하지 않습니다.

관련 문제