Puisque j'utilise Mock dans le test unitaire, j'aimerais le résumer facilement en tant que critique.
Tout simplement ** "Appelé depuis la classe en cours de test, Un substitut aux pièces (autres sources). "
Par exemple, une classe cible de test qui produit des résultats de calcul, Supposons qu'il existe une sous-classe qui effectue réellement le calcul.
Mock remplace cette sous-classe. C'est.
Sub sub = Mock(Sub.class);
Créer un objet simulé à l'aide de la méthode Mock
2.Mockito.when().thenReturn();
//a est le traitement de l'appel de pièce
//b est la valeur renvoyée par la partie appelée
Mockoito.when(sub.getAns()).thenReturn(b);
J'appelle la classe Sub sur la source sous test, Lors de la réussite du test, si la partie appelée Sub n'est pas terminée Le test échoue à la partie appelante et je ne peux pas le passer à la fin. Par conséquent, lorsque la méthode getAns de la classe Sub est appelée à l'aide du processus ci-dessus, Si vous lui demandez de renvoyer la valeur b, vous pouvez réussir le processus dans le test.
3.MockObjectManager.setReturnValueAt
//1er argument=Désignation de classe
//2ème argument=Nom de la méthode
//3e argument=Nombre d'appels
//4ème argument=Réglage de la valeur de retour
MockObjectManager.setReturnValueAt(Sub.class, "getAns", 0, b);
MockObjectManager.setReturnValueAt(Sub.class, "getAns", 1, b);
Également utilisé avec Mockito. En 2. Notez le nombre d'appels au troisième argument. Si la même pièce est utilisée plusieurs fois dans la source cible de test Il faut écrire en fonction du nombre de fois.
4.Mockito.any
//Mockito.n'importe quel exemple
//↓ Le type Int renvoie b quoi qu'il arrive
Mockito.when(sub.getAns(Mocito.anyInt(), Mockito.anyInt())).thenReturn(b);
Dans la classe Main à tester, sans spécifier l'argument lors de l'appel de sub.getAns Tout ce qui est bon si c'est un type int.
Ceci est principalement utilisé lorsque vous souhaitez voir la couverture principalement. Il existe également Mockito.anyString (), Mockito.anyMap () et cast (class) Mockito.any.
//Main=Source à tester
Main main = new Main();
//Sub=Autres pièces de classe
Sub sub = new Sub();
//↓ ↓ Autres choses que j'utilisais
//Spécifiez la variable sub déclarée dans le champ de la classe Main
Field field = Main.getDeclaredField("sub");
//Supprimer les restrictions d'accès aux variables privées
field.setAccessible(true);
//Définir une valeur pour une variable privée
field.set(main, sub);
Si vous l'utilisez dans une série d'étapes pour se moquer, ce sera comme suit.
Sub sub = Mock(Sub.class);
Field field = main.getDeclaredField("sub");
field.setAccessible(true);
field.set(main, sub);
//Si getAns est une méthode d'ajout de deux arguments
Mockito.when(sub.getAns(1,1)).thenReturn(2);
Sub sub = Mock(Sub.class);
Field field = main.getDeclaredField("sub");
field.setAccessible(true);
field.set(main, sub);
//Lorsque l'argument formel de getAns est de type DTO
AnsDTO ansDto = new AnsDTO();
ansDto.setMath1(1);
ansDto.setMath2(1);
Mockito.when(sub.getAns(ansDto)).thenReturn(3);
Recommended Posts