-
Services web et Junit
Bonsoir le monde,
J'ai écrit des services web REST en Java/Maven/Jersey. J'ai donc configuré un serveur Tomcat v7 dans eclipse afin de tester mes développements (ma machine de développement tourne sous GNU/Linux).
J'ai besoin de vous afin d'écrire des tests unitaires. Comment faire pour démarrer automatiquement un serveur de type Tomcat, interroger ma base de données et retourner une réponse adéquate,le tout dans les tests JUnit ? La cerise sur le gâteau serait que ça fonctionne sur un serveur d'intégration genre hudson/jenkins.
Merci de votre aide.
-
Bonjour,
Les tests JUNIT ne servent (en théorie) qu'à tester du code en dehors de tout contexte externe. A la base, c'était pour tester la non-regression.
C'est-à-dire qu'une méthode ou un ensemble de méthodes doivent toujours retourner le même résultat après modification du code (ou alors les tests ne sont plus valables...) quel que doit l'état de l’environnement.
Tous appels à l’extérieur (base de données, WS, etc) doivent être mockés (grâce à des outils comme JMockKit ou easyMock). C'est-à-dire qu'on simule les entrées/sorties vers l'extérieur.
Je te conseille plutôt d’utiliser d'autres outils, comme SOAPUI, pour tester tes WS. C'est prévu pour cela.
Ton serveur Tomcat doit être indépendant de tes tests. C'est-à-dire qu'il faut le démarrer avant tes tests.
Jenkins/Hudson (en général, on l'accompagne de SONAR) va en effet te permettre de lancer les tests JUNIT et de faire un compte-rendu des résultats des tests et de la couverture de code testée. En théorie, tu devrais avoir exactement le même résultat que sur ton Eclipse, même si les WS ou la base de donnée sont différents. C'est très utile lorsqu'on travaille à plusieurs sur le même projet.
Bon courage.
-
Sinon tu peux regarder Arquillian qui permet de démarrer des conteneurs pour les tests d'intégrations avec JUnit.