2017-02-21 9 views
1

log4j를 사용하여 메시지를 기록하고 있으며 log4j 등록 정보는 사용자가 제공합니다. 나는 PropertyConfigurator.configure(Properties)을 사용하여 사용자가 제공 한 속성을 구성했습니다.PropertyMfigito로 PropertyConfigurator.configure()를 조롱하는 방법?

테스트 사례를 작성하는 동안 PowerMock을 사용하여 PropertyConfigurator을 모의하고 방법도 구성합니다. configure() 메서드는 void 정적 메서드입니다. 그렇게하려고하면 nullpointer 예외가 발생합니다. 어떻게 할 수 있니?

나는이 작동하지 않습니다

PowerMockito.mockStatic(PropertyConfigurator.class); 
PowerMockito.doNothing().when(PropertyConfigurator.class); 
PropertyConfigurator.configure(slf4jPropertiesMock); 

을하고 노력했다.

가능하다면 PropertyConfigurator.configure(Properties)을 사용하지 않고 seme 결과를 얻을 수있는 곳에서 다른 방법을 사용할 수 있습니까? 이 경우 단위 테스트가 쉽습니다.

답변

0

당신이 당신의 테스트 클래스에이 구성에서이 있는지 확인하십시오 :

@RunWith(PowerMockRunner.class) 
@PrepareForTest(PropertyConfigurator.class) 
public class Test{ 

귀하의 조롱은 다음과 같아야합니다

PowerMockito.doNothing().when(PropertyConfigurator.class) 
     .configure(Mockito.any(Properties.class); 

감싸고 PropertyConfigurator.configure(Properties) 전화에 PowerMockito없이 패키지 방법 :

,
public class C{ 
    ... 
    void configure(Properties p){ 
    PropertyConfigurator.configure(p); 
    } 

스파이는 C 클래스와 구성 방법 조롱 :

C c = new C(); 
C sSpy = Mockito.spy(c); 
Mockito.doNothing().when(c).configure(Mockito.any(Properties.class);