2017-04-13 21 views
0

테스트 대상 객체가 CGLIB로 향상되었을 때 EasyMock의 @TestSubject annottation을 작동시키는 방법이 있습니까?@TestSubject가있는 Easymock이 CGLIB로 개선되었습니다.

시나리오 : @TestSubject 개체는 어떤 측면에서 Spring이 JDK 기반 프록시를 사용할 수 없다고 가정 할 때 일부 측면을 적용하기 위해 CGLIB로 향상 된 Spring bean입니다. 이 경우 단순히 @TestSubjectEasyMockSupport.injectMocks(this)을 사용하는 것은 실제로 작동하지 않습니다. EasyMock은 모의 (mock)를 주입하지만 실행하는 동안 모의 (mock)은 실제로 CGLIB의 내부 클래스가 작동하는 방식 때문에 사용되지 않습니다. 결국 그것은 모의 객체가 아니라 객체가 가지고 있던 원래 참조로 사용됩니다.

내가 아는 유일한 방법은 테스트 대상에 setter를 만들고 setter를 수동으로 호출하는 mock을 삽입하는 것입니다. 그러나 때때로 나는 setter를 포함하기 위해 주제 코드를 변경하기위한 접근/허가/시간이 없다.

답변

0

cglib 클래스는 항상 final 다른 프록시를 만들지 못하게하는 요소입니다. 그러므로 이것은 불가능합니다. 오히려 클래스가 이미 cglib 프록시임을 발견하고 기본 클래스를 향상시켜야합니다.