Für diejenigen, die JUnit 5 verwenden, ist Powermock keine Option. Sie benötigen die folgenden Abhängigkeiten, um erfolgreich eine statische Methode nur mit Mockito zu mocken.
testCompile group: 'org.mockito', name: 'mockito-core', version: '3.6.0'
testCompile group: 'org.mockito', name: 'mockito-junit-jupiter', version: '3.6.0'
testCompile group: 'org.mockito', name: 'mockito-inline', version: '3.6.0'
mockito-junit-jupiter
fügt Unterstützung für JUnit 5 hinzu.
Und die Unterstützung für das Mocken von statischen Methoden wird durch die Abhängigkeit von mockito-inline
bereitgestellt.
Beispiel:
@Test
void returnUtilTest() {
assertEquals("foo", UtilClass.staticMethod("foo"));
try (MockedStatic classMock = mockStatic(UtilClass.class)) {
classMock.when(() -> UtilClass.staticMethod("foo")).thenReturn("bar");
assertEquals("bar", UtilClass.staticMethod("foo"));
}
assertEquals("foo", UtilClass.staticMethod("foo"));
}
Der try-with-resource-Block wird verwendet, um sicherzustellen, dass das statische Mockobjekt nur vorübergehend bleibt und nur innerhalb dieses Bereichs gemockt wird.
Wenn kein try-Block verwendet wird, stellen Sie sicher, dass Sie das Mockobjekt schließen, sobald Sie mit den Überprüfungen fertig sind.
MockedStatic classMock = mockStatic(UtilClass.class)
classMock.when(() -> UtilClass.staticMethod("foo")).thenReturn("bar");
assertEquals("bar", UtilClass.staticMethod("foo"));
classMock.close();
Mocken von void Methoden:
Wenn mockStatic
auf eine Klasse angewendet wird, werden automatisch alle statischen void Methoden in dieser Klasse gemockt, um doNothing()
.