Один из самых неприятных моментов, когда я выполняю модульные тесты на Java, – это невозможность имитировать статические методы.
Конечно, в течение долгого времени у нас был PowerMock. Но, начиная с JUnit 5, PowerMock не был совместим, и мы не смогли продолжить работу с ним.
Но теперь у нас есть эта функция, включенная в Mockito!
Зависимости
Во-первых, вы должны добавить встроенную библиотеку mockito . (Вы можете использовать любую версию до 3.4.0)
Вот пример с Maven
org.mockito mockito-inline 3.9.0 test
Письменный тест
Чтобы имитировать статический метод, вы должны создать mock Static класса со статическим методом и объявить событие, которое вы хотите применить к своему макету.
пример
@Test public void test() { try (MockedStaticloggerFactoryMock = Mockito.mockStatic(LoggerFactory.class)) { loggerFactoryMock.when(() -> LoggerFactory.getLogger(any(Class.class))).thenReturn(loggerMock); ... verify(loggerMock, times(1)).error("Err message test"); ... } }
Затем вам просто нужно запустить свои тесты!
Я надеюсь, что это поможет вам!
Оригинал: “https://dev.to/adaendra/mock-static-methods-with-mockito-java-unit-testing-189”