Powermockito doNon pour la méthode avec des arguments
J'ai développé une application en Java et je suis en train de créer des tests unitaires à l'aide de Powermockito (je dois ajouter que je suis nouveau sur le test unitaire).
J'ai une classe appelée Ressource qui possède une méthode statique appelé readResources:
public static void readResources(ResourcesElement resourcesElement);
ResourcesElement est également codé par moi.
Dans les tests, je veux créer mes propres Ressources, donc je veux la méthode ci-dessus ne rien faire.
J'ai essayé d'utiliser ce code:
PowerMockito.spy(Resource.class);
PowerMockito.doNothing().when(Resource.class, "readResources", Matchers.any(ResourcesElement.class));
L'unité de test déclenche une exception:
org.mockito.des exceptions.en abuser.UnfinishedStubbingException:
Inachevé stubbing détecté ici:
-> at org.powermock.l'api.mockito.interne.PowerMockitoCore.doAnswer(PowerMockitoCore.java:36)
Powermockito suggèrent également que je devrais utiliser thenReturn ou thenThrow après quand, mais il semble que la méthode de "quand" renvoie nulle lorsqu'elle est appelée après ne rien faire (ce qui est logique).
Si j'essaie:
PowerMockito.when(Resource.class, "readResources", Matchers.any(ResourcesElement.class)).....
ne rien faire n'est pas une option après quand.
J'ai réussi à faire des méthodes sans argument pour ne rien faire, en utilisant les 2 arguments version de la méthode. Par exemple:
PowerMockito.doNothing().when(Moduler.class, "startProcessing");
Cela fonctionne (startProcessing ne prend aucun argument).
Mais comment puis-je faire des méthodes qui prennent des arguments de ne rien faire avec Powermockito?
source d'informationauteur Anakin001
Vous devez vous connecter pour publier un commentaire.
Vous trouverez un exemple ci-dessous. Puisque vous n'avez pas de poste de l'exemple complet, je ne peux que supposer que vous n'avez pas d'annoter la classe de test avec
@RunWith
ou@PrepareForTest
parce que le reste semble bien.Si
doNothing()
ne fonctionne pas, vous pouvez le modifier un peu l'aide de laPowerMockito.doAnswer()
. Cela vous permet de fantaisie dans les méthodes void qui sont censés faire quelque chose, comme les valeurs de réglage, etc. SidoNothing()
ne fonctionne pas, à l'aide d'un videdoAnswer()
devrait fonctionner correctement.Exemple:
Pourquoi passer à travers tant de mal juste pour que votre méthode ne permet pas de faire quoi que ce soit. Juste appeler
PowerMockito.mockStatic(Resource.class)
devrait remplacer toutes les méthodes statiques dans votre classe par défaut talons qui, en gros, signifie qu'ils ne font rien.À moins que vous ne voulez pas modifier le comportement de votre méthode de faire réellement quelque chose de simplement suivre
PowerMockito.mockStatic(Resource.class)
devrait suffire. Bien sûr, cela signifie également toutes les méthodes statiques de la classe sont écrasa dont vous avez besoin à considérer.Peut-être que je ne peux pas comprendre votre question, mais je crois qu'il est nécessaire de préciser ce que doit faire
la méthode, donc si vous ne spécifiez pas de thenReturn ou thenThrow ou quoi que powerMockito ne savez pas quoi faire lors de la lecture de votre code réel, par exemple:
CODE RÉEL:
Tests de code réel par mockito:
Si n'avez pas de spécifier le retour de mon test sera un échec.
J'espère que cela aide.