Ich werde ein Memorandum von JUnit schreiben.
Assert
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.fail;
// actual =Im Falle der Erwartung normal
assertThat(actual, is(expect));
// actual !=Im Falle der Erwartung normal
assertThat(actual, is(not(expect)));
//Error
fail("error reason");
Mockito
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
//Beim Verspotten des gesamten Objekts
Target targetMock = mock(Target.class);
//Beim Verspotten nur die Mock-Set-Methode
Target targetMock = spy(Target.class);
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doThrow;
//Normal beenden
doNothing().when(targetMock).targetMethod(anyString(), any(Parameter.class));
//Auslösen einer Ausnahme * Sie können eine Ausnahme oder RuntimeException angeben, die von der Zielmethode ausgelöst wird
doThrow(new RuntimeException()).when(targetMock).targetMethod("01");
Im obigen Fall wird eine Ausnahme ausgelöst, wenn die Methode targetMethod mit dem Argument "01" aufgerufen wird. Geben Sie anyString () für String, any (Klassenname) für Objekt usw. an, um den Mock zu betreiben, wenn ein beliebiges Argument übergeben wird.
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.when;
//Zum Rückgabewert"ok"Zurückgeben
when(targetMock.targetMethod(anyString())).thenReturn("ok");
//Für die erste und dritte Ausführung"ok"Für den zweiten Lauf"ng"Zurückgeben
when(targetMock.targetMethod(anyString())).thenReturn("ok", "ng", "ok");
//Auslösen einer Ausnahme * Sie können eine Ausnahme oder RuntimeException angeben, die von der Zielmethode ausgelöst wird
when(targetMock.targetMethod(anyString())).thenThrow(new RuntimeException());
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
//Überprüfen Sie die Anzahl der Methodenausführungen
//Stellen Sie sicher, dass die targetMethod-Methode nur einmal ausgeführt wurde
verify(targetMock, times(1)).targetMethod(anyString(), anyString());
Nur öffentliche Methoden können verspottet werden
statische Methoden können nicht verspottet werden
-Mock-Injection von @InjectMocks wird für die direkte Eigenschaft der von @InjectMocks angegebenen Klasse beschrieben. Mit anderen Worten, es wird kein Mock für @Inject in das @ Inject-Objekt eingefügt. Wenn Sie dies tun möchten, müssen Sie Reflection verwenden, um den Mock direkt in die Variable zu verschieben.
Recommended Posts