2014-04-04 2 views
1

나는 이라고 생각했는데동적 프록시을 사용하여 조롱 된 인터페이스. Mockito는 모의 인터페이스를 어떻게 사용합니까?

MyInterface$$EnhancerByMockitoWithCGLIB$$9654c88 

CGLIB 대신 동적 프록시의 사용을 나타내는 :

는 그러나 나는 디버깅 니 Mockito-조롱 intefaces의 유형을 나타났습니다.

은 누군가가 주시겠습니까 :

  • 는 Mockito 내 심문 관련 소스 코드의 위치에
  • 포인트 나를 명확히

답변

1

Mockito는 MockMaker의 상호 교환 구현이 가능하지만, 기본적으로 구현이다 CGLib - 기반 CglibMockMaker.

CGLib와 표준 프록시 개체 간의 차이점에 대한 온라인 토론이 몇 가지 있습니다 ("The Power of Proxies in Java" 또는 "What is the difference between JDK dynamic proxy and CGLib?"). 인터페이스를 조롱하면 Proxy가 완벽하게 잘된 것처럼 보이지만 CGLib를 사용하면 실제 클래스를 구현하여 실제 클래스를 조롱하고 엄격하게 필요할 때도 CGLib에 커밋하면 코드를 훨씬 쉽게 수행 할 수 있습니다.

1

MockMaker이 사용 된 코드 (모듈의 유일한 구현은 CglibMockMaker)를 따르는 경우 mockito-core 모듈 (버전 1.9.5 사용)의 소스에서 도착한 것을 볼 수 있습니다 ClassImposterizer이라는 수업에서 이 클래스에는 Cglib 마법이 포함되어 있습니다 (주석에 명시되어 있음). 또한 Cglib Enhancer의 사용을 개인 방법으로 명확하게 볼 수 있습니다 createProxyClass

관련 문제