2014-09-21 2 views
0

powermock을 사용하여 클래스의 생성자를 억제 할 때 개인 최종 필드의 값을 어떻게 설정할 수 있습니까?PowerMock - 생성자를 억제하지만 개인 최종 필드를 설정하십시오.

생성자 억제 :

suppress(constructor(ABC.class, MyType.class)); 
ABC abc = spy(new ABC(null)); // using the correct value doesn't work 
abc.someMethod(); 

클래스 검사 할 수 있습니다 :

class ABC { 
    private final MyType test; 

    public ABC(MyType test) { 
     this.test = test; 

     // executes code to be suppressed 
    } 

    public void someMethod() { 
     test.doSomethingElse(); 
    } 
} 

답변

2

당신은 일반적으로 반사를 사용 하듯이 :

Field f = ABC.class.getDeclaredField("test"); 
f.setAccessible(true); 
f.set(abc, new MyType()); 

이는 조롱과 관련이 없습니다 따라서 조롱하는 프레임 워크는 API에서 목표로 삼을 것이 없습니다. 테스트를 위해 리팩터링을 고려해야합니다.

관련 문제