J'écrirai un mémorandum de JUnit.
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 =En cas d'attente, normal
assertThat(actual, is(expect));
// actual !=En cas d'attente, normal
assertThat(actual, is(not(expect)));
//Erreur
fail("error reason");
Mockito
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
//Lorsque vous vous moquez de l'objet entier
Target targetMock = mock(Target.class);
//Lorsque vous vous moquez uniquement de la méthode de jeu simulé
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;
//Terminer normalement
doNothing().when(targetMock).targetMethod(anyString(), any(Parameter.class));
//Lancer une exception * Vous pouvez spécifier une exception ou RuntimeException que la méthode cible lève
doThrow(new RuntimeException()).when(targetMock).targetMethod("01");
Dans le cas ci-dessus, une exception est levée lorsque la méthode targetMethod est appelée avec l'argument "01". Pour faire fonctionner le simulacre lorsqu'un argument arbitraire est passé, spécifiez anyString () pour String, any (nom de classe) pour objet, et ainsi de suite.
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.when;
//Vers la valeur de retour"ok"Rendre
when(targetMock.targetMethod(anyString())).thenReturn("ok");
//Pour la première et la troisième exécution"ok", Pour la deuxième manche"ng"Rendre
when(targetMock.targetMethod(anyString())).thenReturn("ok", "ng", "ok");
//Lancer une exception * Vous pouvez spécifier une exception ou RuntimeException que la méthode cible lève
when(targetMock.targetMethod(anyString())).thenThrow(new RuntimeException());
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
//Vérifiez le nombre d'exécutions de méthode
//Assurez-vous que la méthode targetMethod n'a été exécutée qu'une seule fois
verify(targetMock, times(1)).targetMethod(anyString(), anyString());
Seules les méthodes publiques peuvent être ridiculisées
les méthodes statiques ne peuvent pas être moquées
-L'injection de simulation par @InjectMocks est décrite pour la propriété directe de la classe spécifiée par @InjectMocks. En d'autres termes, il n'injecte pas de simulation dans @Inject dans l'objet @Inject. Si vous voulez faire cela, vous devez utiliser la réflexion pour pousser la maquette directement dans la variable.
Recommended Posts