EasyMock — modèle de méthodes à l'intérieur de classe testée?
Dans mon code j'ai parfois l'appel public ou privé méthodes au sein de la même classe. Ces méthodes ne sont pas un bon candidat pour être tiré dans leur propre classe. Chacune de ces méthodes que j'appelle sont testés dans leur propre unité de test.
Donc, si j'ai une méthode dans ma classe Un qui appelle chacune de ces méthodes aussi dans la classe A, est-il une façon de se moquer des appels? Je peux certes, couper et coller à mes attentes/se moquer de comportement, mais pas seulement, cela est fastidieux, il dissimule le point de le tester, viole la modularité, et rend les tests plus des difficultés en raison de l'impossibilité de contrôler ce qui est retourné.
Si non, quelle est la solution habituelle pour ce genre de chose?
Est-il une raison pourquoi vous ne pouvez pas laisser votre appel de méthode autres méthodes comme d'habitude?
Beaucoup d'entre eux de faire des appels qui doivent être moqué.
Je ne vois pas la distinction. Je suis en train de tester la méthode, mais de "re-test" les méthodes qu'ils appellent de le faire.
OriginalL'auteur Jeremy | 2012-11-27
Vous devez vous connecter pour publier un commentaire.
Il semble que vous êtes à la recherche pour les Partiels se moque... voici un blog qui couvre:
http://www.jroller.com/alessiopace/entry/partial_mocks_with_easymock
Cela nécessite la EasyMock ClassExtension, qui, malheureusement, ne peut pas se moquer des méthodes privées.
OriginalL'auteur ach
En règle générale, si vous êtes confrontés à la nécessité de se moquer d'une méthode privée (ou une méthode publique sur la même classe que vous faites des tests), vous devriez vraiment envisager de déplacer le code de cette méthode à une autre classe.
Du test point de vue, il devrait être d'aucun intérêt comment la méthode de test des archives de l'état attendu (qu'il appelle une autre méthode ou pas). Le point essentiel de l'intérêt doit être la résultante d'un changement d'état d'une méthode effectue, pas les méthodes qui il demande de le faire.
OriginalL'auteur mbelow
Cela peut être fait avec EasyMock 2.2 extension de classe, ou EasyMock 3.0 et (ce qui comprend l'extension de classe.)
Partielle moqueur est documenté ici:
http://www.easymock.org/EasyMock2_2_2_ClassExtension_Documentation.html
La syntaxe est assez simple. Vous spécifiez la classe que vous soyez les moqueries et les méthodes que vous êtes moqueur. Dans cet exemple, imaginez que la classe est "Chien" et il a deux méthodes, "manger" et "eatUntilFull". Vous pouvez placer ce code dans le eatUntilFull test:
Vous pouvez ensuite traiter que, comme toute autre fantaisie.
Mises en garde:
1), l'Appel d'une méthode au sein de votre classe à partir d'un autre pourrait être le signe d'une mauvaise conception -- pouvez-vous abstraction de cette logique à une autre classe?
2) Même si vous ne pouvez pas, il peut y avoir aucun problème à laisser votre méthode d'appeler une autre méthode elle-même pendant le test. Cela peut être le préféré de comportement.
3) Vous ne pouvez toujours pas de cible méthodes privées, de sorte que vous pouvez les définir comme des colis-privé au lieu de privé.
OriginalL'auteur Jeremy