2014-03-13 3 views
0

Java와 함께 Mockito에 대한 질문이 있습니다. 클래스 A에는 구현이 있고 클래스 B에는 구현이 있습니다. 최종 수업 CI는 주 수업을 모의하고 싶습니다 A. 가능합니까 ?? 추첨과 같이 될 것이다 :Mockito를 사용하여 하위 클래스의 부모 클래스 모의

Class A ----> Class B ---> Class C 

난 (obiously가 A와 B 사이의 상속이고, B 및 C 사이) 내부 C 모의 할. A와 B, C 중 하나는 자체 구현 클래스가있는 DAO 클래스입니다.

어떻게하면됩니까? Mockito를 사용하여 내부 C 구현 클래스를 조롱 할 수 있습니까?

당신의 지원에 감사 AB를 확장하고 B 방법을 조롱 A을 테스트하려는 경우 종류

답변

1

에 관해서, 당신은 spyA의 모의 B 방법을 사용할 수 있습니다

final A spy = Mockito.spy(yourInstanceOfA); 
Mockito.doReturn(something).when(spy).methodOfB(); 

spy.methodOfA(); 
// add some assertions 
0

C의 경우 계층 구조에서 확장 성이있는 마지막 클래스 일 뿐이며 final이 아니라면 부분적으로 C를 모의 할 수 있습니다.

, C가 final 경우

는하지만, 당신은 전체 단위로 테스트 할 수 있습니다 당신은 미래에 옵션이있는 경우 단순히 B.

@RunWith(JUnit4.class) public class CTest extends BTest { 
    @Override protected B createB() { 
    return new C(); 
    } 

    @Test public void testCSpecificBehavior() { /* ... */ } 
} 
이상의 업그레이드는

, 당신은 favoring composition over inheritance을 고려할 수있다 테스트에서 몇 가지 옵션을 제공합니다.

관련 문제