Hier ist meine Testmethode:
Code: Select all
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();
}
Wie kann ich also die statischen Methodenaufrufe mit MockedStatic (nicht Powermock usw.) überprüfen? Sollte ich sie in Try-Blöcken aufrufen?
Update: Ich verwende den folgenden Ansatz, aber er gibt immer noch den Fehler „Gesucht, aber nicht aufgerufen“ aus, selbst wenn der Haltepunkt einmal für die von der Dienstmethode aufgerufene statische Methode erreicht wurde.
Code: Select all
// 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()));
}
demoService:
Code: Select all
public CommandDTO create(final PurchaseRequest request) {
// code omitted
addLog();
return CommandDTO.builder().uuid(purchase.getUuid()).build();
}
private void addLog() {
LoggingUtils.error("error", null);
}
Code: Select all
public class LoggingUtils {
public static void error(String var1, Throwable var2) {
log.error(getString(var1), var2);
}
}
Mobile version