PowerMock accès privé des membres de la
Après la lecture de:
https://code.google.com/p/powermock/wiki/BypassEncapsulation
j'ai réalisé, je ne l'obtenez pas.
Voir dans cet exemple:
public class Bar{
private Foo foo;
public void initFoo(){
foo = new Foo();
}
}
Comment puis-je accéder à un membre privé foo
en utilisant PowerMock (par exemple, Pour vérifier que foo
n'est pas nulle)?
Remarque:
Ce que je ne veux pas, c'est de modifier le code supplémentaire get
méthodes.
Edit:
J'ai réalisé que j'ai raté un exemple de bloc de code sur la page du lien avec la solution.
Solution:
Whitebox.getInternalState(bar, "foo");
Je recommande penser attentivement avant d'écrire ce type de test, les arguments contre, en vérifiant la valeur de la variable privée résumées ici: stackoverflow.com/questions/2981476/...
Le vrai test est un peu plus complexe et implique la mise en veille prolongée, session et sessionfactory, j'essaie de vérifier notre dbInterface sans avoir à initialiser complète hibernate choses. Dans la plupart des méthodes que nous modifier des objets dans l'état et n'ont pas de véritable fonctionnalité d'entrée/sortie.
Le vrai test est un peu plus complexe et implique la mise en veille prolongée, session et sessionfactory, j'essaie de vérifier notre dbInterface sans avoir à initialiser complète hibernate choses. Dans la plupart des méthodes que nous modifier des objets dans l'état et n'ont pas de véritable fonctionnalité d'entrée/sortie.
OriginalL'auteur Gobliins | 2015-01-19
Vous devez vous connecter pour publier un commentaire.
Qui devrait être aussi simple que l'écriture de la suite de la classe de test:
L'ajout de la droite (statique) des importations est laissé comme exercice au lecteur :).
J'aime bien le "Organiser, d'Agir, de faire Valoir" des commentaires. J'utilise "le programme d'Installation, Tester, Valider", mais comme l'anneau de la 3 Comme.
J'ai effectivement changé à partir de la S-T-V-A-A. L'allitération en effet fait son beau. Mais le plus important (abréviation): il vous permet de structurer votre test, ce qui rend plus difficile accidentellement test de votre maquette à la place de votre CIBLE. J'ai vu cela se produire - les trois phases d'être mélangés.
réponse à l'exercice de private static bar: Foo foo = Whitebox.getInternalState(Bar.class, "foo"); vous pouvez obtenir un champ statique directement par le biais de la classe plutôt que de l'instance 🙂
OriginalL'auteur mthmulders