2009-12-04 3 views

Répondre

17

La chose la plus importante à faire est d'essayer d'extraire tout des servlets que n'est pas directement lié au comportement de servlet.

Cela rend immédiatement la fonctionnalité de base de test plus facile à lot. En faisant cela, vous avez immédiatement un ensemble de composants non liés au conteneur et testables sans la douleur de courir et d'interfaçage avec un conteneur (en plus de les rendre plus réutilisables). Une réflexion devrait être faite sur l'architecture et la superposition appropriée des composants - par ex. les composants renvoyant des structures d'objets plutôt que des fragments affichables, n'utilisant pas directement HttpRequests mais une structure de marshalling de demande, etc.

La majorité de vos tests (en fonction de la structure et de la complexité de votre système) peuvent être testés normalement. Des tests supplémentaires axés sur les servlets peuvent être construits en utilisant (par exemple) Apache Cactus pour vérifier la fonctionnalité. Au-delà de cela, vous voudrez peut-être étudier les solutions dans le navigateur telles que Selenium.

(Note: Cette approche fonctionne pour la plupart des environnements GUI - par exemple Swing)

+0

"2011/08/05 - Jakarta Cactus a été retraité." – Raedwald

2

Presque la même question a été posée aujourd'hui here.

Jakarta cactus est un cadre de test unitaire pour les servlets.

+0

Bon à savoir ce projet de Jakarta cactus. Mais j'aimerais aussi savoir quelles sont les meilleures pratiques. Merci pour le pourboire! –

+0

"2011/08/05 - Jakarta Cactus a été retraité." – Raedwald

2

Ce que nous faisons normalement est de charger le servlet avec une demande et une réponse fausse. Si vous utilisez Spring, cela est particulièrement facile car il fournit en réalité MockHttpRequest et MockHttpResponse.

En supposant que vous ayez des calques clairement définis dans votre application, le reste est facile. La couche de service/DAO sous-jacente peut être remplacée par des mocks, nous nous assurons donc que la servlet fait ce qu'elle est censée faire pour l'objet de requête donné, et écrit la réponse correctement.