Je vous écris une application Socket Java, où un serveur prend des messages à partir d'une notification EventSource et l'envoi aux utilisateurs connectés, en fonction du eventtype.JUnit meilleures pratiques - les méthodes d'essai, où le résultat ne peut pas être vérifiée avec des méthodes publiques
Maintenant, je suis sur le point d'écrire des tests JUnit pour le serveur ... JUnit (dans Eclipse suggère automatiquement) pour implémenter des tests pour toutes les méthodes publiques et j'en vois la nécessité. La classe server a une méthode publique bufferEvent ..., mais les événements sont gérés dans des méthodes privées et il n'y a même pas de méthode qui renvoie le nombre de messages mis en mémoire tampon.
Ainsi, le serveur ne dispose pas de méthodes publiques pour vérifier le résultat.
Je pense que le problème peut être généralisé: Comment puis-je tester les méthodes publiques, où le résultat ne peut pas être vérifiée avec des méthodes publiques (sans etc. getter)
Je veux éviter d'écrire des méthodes supplémentaires juste pour les tests. Existe-t-il une solution de contournement ou une meilleure pratique pour tester ces éléments?
Merci d'avance
Probablement la réflexion pourrait aider? – Petr
http://stackoverflow.com/questions/10141626/changing-private-methods-to-protected-for-testing – andersoj
pouvez-vous fournir votre code? Nous avons des coachs TDD dans notre société et ils nous ont expliqué quelques astuces, mais les varient en fonction du code source. Parfois, vous n'avez pas à tester les résultats de la méthode, mais juste pour vérifier si certains appels sont correctement effectués. Parfois, vous avez un défaut de conception et la méthode privée devrait en réalité résider dans une autre classe et être publique et donc testable. – ThanksForAllTheFish