googlemock 및 googletest의 도움을 받아 테스트중인 메소드에서 다른 조롱 된 오류가 올바르게 처리되는지 확인하는 테스트를 설정합니다. 기본적으로 내 코드는 다음과 같습니다googlemock 작은 동작 변형이있는 EXPECT_CALL
// setup mock object, and object under test
// setup initial EXPECT_CALL expectations
// this expected method call in the middle mocks a failure
EXPECT_CALL(*mock, method(arg_in)).
Times(1).
WillOnce(Throw(exception_of_type_A));
// setup cleanup EXPECT_CALL expectations
// Now invoke method in object under test.
// Expect exception has been translated to different type.
EXPECT_THROW(x.method_under_test(), exception_type_B);
// destructor of mock object will check the mock method invocations
이제 A 형의 예외를 던져 실패 할 수 있습니다뿐만 아니라 여기에 실패,뿐만 아니라 B 형의 예외를 던지는 내 조롱 방법을, 또는 예기치 않은 리턴 값을 반환하여 .
완벽하게 TEST()를 복사하여 붙여 넣기 만하면됩니다. 잘못 구현 된 메소드 1이 수행 할 작업을 변경하면됩니다. 그러나 이렇게하면 코드가 지저분해질 것입니다. 이 3 가지 테스트가 조롱 된 메소드 1이 WillOnce() 액션 스펙에서 어떻게 실패했는지를 제외하고는 똑같은 것으로 문서화하더라도, 사람 독자는 여전히 이것이 사실이라면 여전히 신중하게 비교해야 할 것입니다.
googletest/googlemock에서 3 개의 TESTS 사이에 공통 코드를 공유하고 WillOnce() 동작이 서로 다른 올바른 방법은 무엇입니까?
내 생각에 매크로 : 매크로, WillOnce() 액션이있는 컨테이너의 루프, googletest fixtures, 설정 및 정리를위한 정적 도우미 메소드.
저는 아직 googletest를 처음 사용하고 있으며이를 해결하는 방법을 모르겠습니다.