Comment se moquer de méthode statique sans powermock
Est-il possible de la maquette statique util méthode lors de tests dans junit?
Je sais Powermock peut se moquer les appels statiques; mais je ne veux pas utiliser Powermock.
Existe-il des alternatives?
Vous ne pouvez pas se moquer de méthodes statiques, même si vous utilisez Mockito.
Est-il une raison pourquoi vous ne voulez pas utiliser powermock?
Avez-vous de s'en moquer? Est-ce votre code et vous pouvez réécrire, de sorte qu'il n'y aura pas de statique? méthodes Statiques sont mort pour la testabilité
Ceux qui sont util classe d'utilisation par un autre module, donc je ne peux pas changer
J'ai remarqué que votre question est toujours "ouvert" - il ne pas accepter une réponse. S'il vous plaît avoir un coup d'oeil et décider si vous voulez accepter une réponse. Ou laissez-moi savoir si il y a quelque chose que je peux faire pour améliorer mon entrée pour le faire accepter digne. En acceptant aide les futurs lecteurs, afin de déterminer si le problème est résolu, et montre l'appréciation pour les personnes qui ont pris le temps de répondre à vous. Merci!
Est-il une raison pourquoi vous ne voulez pas utiliser powermock?
Avez-vous de s'en moquer? Est-ce votre code et vous pouvez réécrire, de sorte qu'il n'y aura pas de statique? méthodes Statiques sont mort pour la testabilité
Ceux qui sont util classe d'utilisation par un autre module, donc je ne peux pas changer
J'ai remarqué que votre question est toujours "ouvert" - il ne pas accepter une réponse. S'il vous plaît avoir un coup d'oeil et décider si vous voulez accepter une réponse. Ou laissez-moi savoir si il y a quelque chose que je peux faire pour améliorer mon entrée pour le faire accepter digne. En acceptant aide les futurs lecteurs, afin de déterminer si le problème est résolu, et montre l'appréciation pour les personnes qui ont pris le temps de répondre à vous. Merci!
OriginalL'auteur gati sahu | 2017-07-07
Vous devez vous connecter pour publier un commentaire.
(Je suppose que vous pouvez utiliser Mockito) Rien dédié vient à mon esprit, mais j'ai tendance à utiliser les stratégies suivantes quand il s'agit de situations telles que:
1) Dans la classe sous test, remplacer la statique direct appel à niveau du package méthode qui encapsule l'appel statique lui-même:
2) Espion de la classe sous test en tests et des simulations du paquet enveloppé niveau de la méthode:
Si la classe n'est pas définitive, il pourrait sous-classe
ToBeTested
ajout de la méthode wrapper et le test de la sous-classe.J'obtiens une erreur
Wanted but not invoked:
Actually, there were zero interactions with this mock.
quand j'ai essayer de vérifier si la méthode a été appelée.OriginalL'auteur Maciej Kowalski
Lorsque vous avez statique code qui vous donne de la difficulté dans vos tests unitaires, de sorte que vous sentez que vous avez à "se moquer", vous avez exactement ces options:
En d'autres termes: si vous souhaitez utiliser un moqueur cadre, vous devez utiliser l'une de celles énumérées ci-dessus. D'un côté, c'est tout à fait juste. statique est une partie du langage Java; alors pourquoi ne pas utiliser un framework qui vous permet de traiter avec elle?
Mais bien sûr: vous avez toujours la statique appel dans votre code de production ensuite. Conduisant à couplage et la prévention de polymorphisme.
Donc: si vous pouvez vous débarrasser de la statique appel (même quand il vient à l'aide de la solution de contournement est suggéré dans l'autre réponse) - tout le meilleur. Si non: Mockito ne peut pas l'aider; vous avez besoin de la magie de l'octet code de la manipulation resp. JVM agents.
OriginalL'auteur GhostCat