2014-05-12 2 views
2

클래스에서 하나의 정적 메서드 만 모의하려고합니다. 다른 모든 메서드는 실제 개체처럼 작동해야합니다.PowerMockito. 모의 정적 메서드. PowerMockito # 스텁이 작동하지 않는 이유는 무엇입니까?

코드 :이 방법

public class ArrTest { 

    public static int myMethod (int arr []) {   
     return 777; 
    } 
} 

시험 :

public class ArrTestTest { 
    @Test 
    public void myMethodTest(){   
     PowerMockito.stub(PowerMockito.method(ArrTest.class, "myMethod")).toReturn(0); 
     System.out.println(ArrTest.myMethod(null)); 
    } 
} 
나는 777을 참조 출력

하지만 난 0을보고 싶어;

무엇이 잘못 되었나요?

답변

5

귀하의 접근 방식은 올바르지 만은 PowerMockito 악기 클래스 만들기 위해 적절한 테스트 러너 사용하는 주석을 놓치고 :

@PrepareForTest(ArrTest.class) 
@RunWith(PowerMockRunner.class) 
public class ArrTestTest { 
    @Test 
    public void myMethodTest(){ 
     PowerMockito.stub(PowerMockito.method(ArrTest.class, "myMethod")).toReturn(0); 
     System.out.println(ArrTest.myMethod(null)); 
    } 
} 

이 편집 :

는 후속를 해결하기를 의견의 질문 - 이미 테스트 주자가있어 PowerMockRunner을 사용할 수없는 경우

와 같은 결과를 얻을 수 있습니다.
+0

ArrTestTest 클래스가 MockitoJUnitRunner.class와 함께 이미 RunWith 인 경우 어떻게해야합니까? – gstackoverflow

+0

또 다른 접근법은'PowerMockRule'을 사용하는 것입니다 - 나는이 정보로 내 대답도 편집했습니다. – Mureinik

+0

굉장하고 멋진 – gstackoverflow

관련 문제