Quand j'explique les tests unitaires J'aime décrire comme une liste de phases:
- Configuration de test: Définir et créer toutes les données et objets que vous avez besoin pour les tests
- attentes: Dites quelles méthodes et paramètres que vous attendez à exécuter pendant le test
- test: le comportement réel/méthode que vous voulez tester
- appel assertions: les déclarations qui font que le résultat du test ont réussi
- Tear down: Détruire tous les effets secondaires qui se sont produits pendant le test
jUnit est un cadre de test unitaire et fournit toutes les phases de test, à l'exception des attentes.Alternatives dans l'espace Java incluent:
- TestNG
- jtest
- jBehave (sorte de)
- Jdave (sorte de)
Autres équivalents de langue comprennent:
- PHP - phpUnit
- Ruby - Test :: Unit
- flash - FlexUnit
Le concept de moquerie est ce ajouté la nouvelle phase des attentes, et depuis jUnit a vu la plupart de ses grands projets de développement avant le mouvement moqueur, ces caractéristiques ont été pas intégré dans le noyau, et un ensemble d'outils pour combler ce vide dans l'espace java ont ouvert. Ces bibliothèques comprennent
Toutes ces bibliothèques sont des compliments à l'un des cadres ci-dessus de tests unitaires I répertoriés, y compris jUnit. Ils ajoutent la possibilité de définir des objets fantaisie. Les objets fantômes reçoivent des "attentes" qui sont ensuite affirmées dans la phase Assertions. Chaque bibliothèque Mock accomplit cette façon légèrement différente, mais les principaux modèles sont
- enregistrement Replay - EasyMock
- attentes - JMock, jMockIt
Personnellement, je suis fan de l'approche des attentes, qui est plus déclaratif, et moins sujette aux erreurs, car il nécessite moins de méthodes pour être appelé par l'implémenteur, mais c'est une préférence stylistique et non technique.
D'autres langues (puisqu'elles sont arrivées au monde des tests unitaires plus tard que java) n'ont pas cette séparation pour la plupart. La bibliothèque de tests unitaires et la bibliothèque de simulation sont une seule et même chose. C'est le cas dans phpunit, rspec. J'imagine que jUnit n'intégrera pas ce natif de sitôt, car il existe déjà un ensemble aussi riche de fausses bibliothèques alternatives.