Unité de test pour la méthode qui appelle plusieurs autres méthodes utilisant Mockito

J'ai peut-être complètement tombé court dans ma recherche, mais je ne peux pas trouver de la documentation ou des discussions relatives à la façon d'écrire un test unitaire pour une classe Java/méthode qui appelle à son tour à d'autres non-méthodes privées. Apparemment, Mockito prend la position qu'il y a peut-être quelque chose de mal avec le design (pas vraiment OO) si un espion doit être utilisé afin de tester une méthode où se moquant interne les appels de méthode est nécessaire. Je ne suis pas certain que c'est toujours vrai. Mais à l'aide d'un espion semble être le seul moyen d'accomplir cela. Par exemple, pourquoi ne pourriez-vous pas avoir un "wrapper" style de méthode qui s'appuie à son tour sur d'autres méthodes pour primitives les fonctions mais fournit en plus de la fonctionnalité, la gestion des erreurs, l'exploitation forestière, ou les différentes branches dépend des résultats des autres méthodes, etc.?

Donc ma question est double:

  1. Est mal conçu et mis en œuvre le code d'une méthode qui appelle en interne par d'autres méthodes?
  2. Quelle est la meilleure pratique et/ou d'approche dans l'écriture d'un test unitaire pour une telle méthode (en supposant qu'il est en soi une bonne idée), si l'on a choisi Mockito que leurs moqueries cadre?

Cela peut être difficile, mais je préférerais, pour ceux qui décident de répondre à pas simplement re-publier le Mockito verbiage et/ou de la position sur les espions que j'y suis déjà au courant de cette démarche et de l'idéologie. Aussi, j'ai utilisé Powermockito. Pour moi, le problème ici est que Mockito développé ce cadre, où les autres solutions ont dû être créés pour prendre en charge ce besoin. Donc je suppose que la question que je suis en voulant une réponse est de savoir si les espions sont "mauvais", et Powermockito n'étaient pas disponibles, comment est-on censé unité de tester une méthode qui appelle d'autres non-méthodes privées?

Tout code qui a des méthodes publiques de l'appel d'autres méthodes publiques (OK, peut-être à l'exclusion des getters et setters) devraient être examinés pour la violation potentielle de la GIFLE principe et/ou à la poubelle barge antipattern.
Auriez-vous l'esprit de partage certaines sources fiables quant à cette information?
Ici, vous allez: ibm.com/developerworks/java/library/j-eaed4/index.html et drdobbs.com/four-wheel-drive-garbage-barges-and-obje/184414617 .

OriginalL'auteur aquacode | 2012-09-27