2013-03-11 4 views
1

PowerMock 또는 다른 라이브러리에서 라이브러리의 클래스에서 정적 호출을 모방 할 수 있는지 궁금합니다. 해당 써드 파티 라이브러리의 클래스는 rt.jar의 클래스 중 하나를 호출하고 리턴 된 사용자 정의 구현은 Type이 되길 원한다. 테스트 코드 외부에서이 작업을 수행하려고합니다.타사 라이브러리의 클래스에서 정적 호출 모의 방법

그렇지 않은 경우 해당 라이브러리에서 몇 가지 클래스를 확장하고 일부 구현을 대체해야했습니다. 누군가 전에 이런 짓을 한 적이 있습니까?

+0

제 3 자 라이브러리에서 원하는 반환 값을 '설정'할 방법이 없었습니까? 저것은 조롱을 피할 것이고, 그래서 나는 그것을 먼저 확인한 것 같습니다. – vikingsteve

답변

0

예 가능합니다. 하나의 방법 만 조롱하려면 PowerMock.mockStatic() 또는 PowerMock.mockStaticPartial()을 사용하십시오.

PowerMock의 홈페이지에서 아주 좋은 지침서가 있습니다.

게시했습니다. an example on SO입니다.

[EDIT] 그러나 프로덕션 코드에서 이러한 마법을 사용하려면 테스트 프레임 워크를 사용하지 않는 것이 좋습니다. 어쩌면 Groovy이 도움이 될 것입니다. 런타임시에 Groovy로 클래스 (심지어 JDK 클래스)를 조작하는 것이 가능하며, JVM 맨 위에있는 더 얇은 레이어입니다.

0

일반적으로 말하자면 하드 코어 스터 빙을하는 것은 정말 좋은 생각입니다. (당신이 묘사 한 것을 비웃는 것이 아닙니다.) 나는이 라이브러리에 대한 작은 추상화를 구축하여 돌아가고 싶은 것을 완벽하게 제어 할 수 있습니다. PowerMock의 일부 기능을 테스트 외부에서 사용할 수도 있지만 케이크가 아닙니다. 여기에 당신이 정말로 원한다면 도움이 될 수있는 대략적인 설명이 있습니다 : https://groups.google.com/d/msg/powermock/SMDMe-y6fLg/1HF0TsGOqTIJ

어쨌든 저는 이것을 권하고 싶지 않습니다.