Unterstützung für das Verspotten statischer Methoden ab Version 3.4 von Mockito. Dadurch entfällt die Notwendigkeit, PowerMock zu installieren, wenn Sie nur statische Methoden verspotten möchten.
Zusätzlich zu dem oben genannten Glas benötigen Sie einen neuen "Mockito-Inline" - und "Byte-Buddy-Agent".
Sie können sie von Mockito Official Site bzw. ByteBuddy Official Site herunterladen.
Ausführung | |
---|---|
java | 8 |
JUnit | 5 |
Enthält statische Methoden.
public class MockedClass {
public static String methodA() {
return "val1";
}
public static String methodB() {
return "val2";
}
public static String methodC(String str) {
return str;
}
}
public class MockedClassTest {
@Test
public void test() throws Exception {
//Erwarteter Wert
String expected_methodA = "test";
String expected_methodB = "val2";
//Die Zielklasse verspotten
MockedStatic<MockedClass> mocked = Mockito.mockStatic(MockedClass.class);
//Legen Sie einen Rückgabewert fest und machen Sie ihn zu einem Stub
mocked.when(MockedClass::methodA).thenReturn(expected_methodA);
//Wenn nicht Stummel
mocked.when(MockedClass::methodB).thenCallRealMethod();
//Lauf
String actual_methodA = MockedClass.methodA();
String actual_methodB = MockedClass.methodB();
//Überprüfen Sie das Ergebnis
assertEquals(expected_methodA, actual_methodA);
assertEquals(expected_methodB, actual_methodB);
}
}
Mockito.mockStatic ()
verspotten
ThenReturn ()
, um den Rückgabewert festzulegen
Wenn Sie die reale Sache aufrufen möchten, ohne den Rückgabewert festzulegen, thenCallRealMethod ()
Sie können verwenden.
Im Beispielcode wird es durch die Methodenreferenz wie "MockedClass :: methodA" angegeben, aber die Beschreibungsmethode, wenn ein Argument vorhanden ist, lautet wie folgt.
mocked.when(() -> { MockedClass.methodC(Mockito.anyString()); })
.thenReturn("stub");
Sie können any () von Mockito in der Argumentliste angeben. Natürlich ist der Lambda-Ausdruck auch dann gültig, wenn kein Argument vorliegt. {} Kann gemäß der Beschreibungsregel für Lambda-Ausdrücke weggelassen werden.
mocked.when(() -> MockedClass.methodA())
.thenReturn("stub");
Recommended Posts