2017-02-21 51 views
1

Я использую log4j для регистрации сообщений, и свойства log4j поступают от пользователя. Я использовал PropertyConfigurator.configure(Properties) для настройки свойств, предоставляемых пользователем.Как издеваться над PropertyConfigurator.configure() с PowerMockito?

При написании тестовых примеров я использую PowerMock для издевательства PropertyConfigurator и настройки метода. Метод configure() является статическим методом пустоты. Я получаю исключение nullpointer при попытке сделать это. Любой способ сделать это?

Я попытался сделать

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

Это не работает.

Если возможно, есть ли способ сделать другой путь, где я получу результат seme без использования PropertyConfigurator.configure(Properties)? В этом случае модульное тестирование будет простым.

ответ

0

Убедитесь, что эту конфигурацию на вашем тестовом классе:

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

Ваш насмешливый должен выглядеть следующим образом:

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

Без PowerMockito

Оберните PropertyConfigurator.configure(Properties) звонки в a упаковка метод:

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

Spy класса C и издеваться метод Configure:

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