2013-10-15 2 views
0

조롱 된 클래스에서 조롱되지 않은 모든 작업이 정상적으로 작동합니까?EasyMock : 부분적으로 조롱 된 클래스

E.G.

는 개체

public class Shape { 
    public void createShape(...){ 
     .... 
    } 

    public void removeShape(...){ 
     .... 
    } 

    ... 
} 

shape = createMock(Shape.class, new Method[]{Shape.class.getMethod("removeShape", new Class[]{...})}); 

처럼 조롱 경우 감안할 것 createShape() 작업과 같은 다른 모든 방법 또는 사용하려는 모든 방법을 조롱해야합니까?

+1

왜 그렇게 시도하지 않으시겠습니까? –

+0

나는 비슷한 것을 시도해 보았지만, 다른 모든 방법들이 작동하지 않는 것처럼 보였습니다. 그러나 easymock 프레임 워크를 배우는 것만 큼 확실하지 않습니다. 다른 방법으로도 가능하거나 내 예제에서 잘못된 것을했을 경우 – flexinIT

답변

4

간단히 말해서, 그렇습니다.

부분 모의는 조롱 된 클래스의 인스턴스와 똑같이 작동하지만 조롱으로 설정 한 메소드에 기대치를 추가 할 수 있습니다. 이것은 대개 해당 메소드의 수퍼 클래스 구현에 의존하는 재정의 메소드가있을 때 유용합니다.

귀하의 예제에서 deprecated createMock (Class, Method ...) 메소드를 사용하고있는 것처럼 보이므로 Shape 클래스의 부분 모의를 작성하는 방법에 대한 예제를 제공합니다. 그것이 행동에 대한 몇 가지 기대를 필요로합니다 removeShape 방법을 사용하려고 할 때까지

final IMockBuilder<Shape> mockBuilder = EasyMock.createMockBuilder(Shape.class); 
mockBuilder.addMockedMethod(Shape.class.getMethod("removeShape", new Class[]{...})); 
final Shape mockShape = mockBuilder.createMock(); 

는 완벽하게 정상적으로 작동 Shape 객체를 제공합니다.

개인적으로 매우 드물게 Method 매개 변수를 사용하는 addMockedMethod 버전을 사용합니다. 일반적으로 mocking하는 메서드는 addMockedMethod (String) 버전을 사용할만큼 충분히 독특합니다.

final IMockBuilder<Shape> mockBuilder = EasyMock.createMockBuilder(Shape.class); 
mockBuilder.addMockedMethod("removeShape"); 
final Shape mockShape = mockBuilder.createMock(); 

이 내 눈에 약간의 청소기와 같은 결과를 얻을 : 그래서 대부분 다음을 사용합니다.

그러나 이러한 부분적인 모의는 완전한 모의와 동일한 법률에 따라 생활합니다. 이렇게 최종 방법을 조롱 할 수는 없습니다.

도움이 되길 바랍니다

관련 문제