Как смоделировать не stati c регистратор с PowerMock? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть класс, который выглядит следующим образом:

class Service {
    private final Logger lgr = LoggerFactory.getLogger(Service.class);

    public void doService() {
        lgr.info("Do Service");
    }
}

public class Controller {
    private final Logger lgr = LoggerFactory.getLogger(Controller.class);

    @Autowired
    private Service service;

    protected void doSomething() {
        //do something
        lgr.info("LOG something"); // lgr line
        // do something else

    }
}

И соответствующий тестовый класс, который выглядит следующим образом:

@RunWith(PowerMockRunner.class)
@PrepareForTest({ControllerTest.class, LoggerFactory.class})
public class ControllerTest {
    private Controller controller;

    @Mock
    private Service service;

    @Before
    public void init() {
        controller = Mockito.mock(Controller.class, Mockito.CALLS_REAL_METHODS);
    }

    @Test
    public void testDoSomething() {
        controller.doSomething();  // calling doSomething method of Controller class
        // some other statements
    }
}

Здесь, когда вызов переходит к doSomething () метод, в строке строка lgr , объект lgr имеет значение null, из-за чего мой модульный тест не выполняется с NullPointerException.

Может кто-нибудь, пожалуйста, помогите мне это исправить?

...