Как использовать Mockedstatic Проверить статические методы?JAVA

Программисты JAVA общаются здесь
Anonymous
Как использовать Mockedstatic Проверить статические методы?

Сообщение Anonymous »

У меня есть следующие макет для 2 разных статических методов; UnitConversion.IsCompatible () и logging.error () , которые вызываются в моем методе обслуживания.
Вот мой метод испытания:
myService.demoMethod();

try (MockedStatic unitConversion= mockStatic(UnitConversion.class)) {
unitConversion.verify(never(), () -> UnitConversion.isCompatible(any()));
UnitConversion.isUnitsCompatible(any());
}

try (MockedStatic logging = mockStatic(Logging.class)) {
logging.verify(times(1), () -> Logging.error(any()));
Logging.error(any();
}
< /code>
Первый метод никогда не вызывается, в то время как второй называется один раз, когда я отлаживает. Это нормально, но тест дает «разыскиваемую, но не вызванную» ошибку для второго метода. Я не уверен, следует ли мне называть статические методы в блоках Try, потому что я уже называю свой метод службы, который вызывает статические методы. Должен ли я позвонить в них в блоках Try?// I also try to call the service method under the test here again
demoService.create(request);

try (MockedStatic mock = mockStatic(LoggingUtils.class)) {
// as the static method is void, no need to stub and not use "when()" in here

// I call the service method under the test
demoService.create(request);

// verify that the method is being invoked
mock.verify(times(1), () -> LoggingUtils.error(any(), any()));
}

update-ii:
demoservice:
public CommandDTO create(final PurchaseRequest request) {
// code omitted

addLog();
return CommandDTO.builder().uuid(purchase.getUuid()).build();
}

private void addLog() {
LoggingUtils.error("error", null);
}

loggingutils:
public class LoggingUtils {

public static void error(String var1, Throwable var2) {
log.error(getString(var1), var2);
}
}


Подробнее здесь: https://stackoverflow.com/questions/714 ... ic-methods

Вернуться в «JAVA»