Question

Actuellement, je suis en utilisant le framework TestNG pour la logique métier des applications de test, j'ai ajouté quelques classes Servlet récemment.

Comment puis-je test unitaire ces classes Servlet dans le cadre testng?

Était-ce utile?

La solution

Suivez les conseils de skaffman si possible. Dans le cas contraire, ou si vous voulez tester le comportement des servlets en tant que contrôleurs frontaux, plutôt que la logique métier en eux, vous pouvez utiliser:

Autres conseils

L'une des façons les plus simples est ServletTester de la jetée. Tout se fait dans la jetée intégrée automatiquement, donc il n'y a pas de port ouvert pendant le test! Si vous utilisez Maven que l'artefact suivant est nécessaire pour activer cette méthode:

<dependency>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-servlet-tester</artifactId>
  <version>6.1.16</version>
  <scope>test</scope>
</dependency>

Exemple:

Préparer ServletTester

ServletTester tester=new ServletTester(); 
tester.addServlet(HelloServlet.class, "/hello"); 
tester.start();

Créer requête HTTP

HttpTester request = new HttpTester(); 
request.setMethod("GET");
request.setHeader("Host","tester"); 
request.setURI("/hello");
request.setVersion("HTTP/1.0");

servlet d'appel et de récupérer la réponse:

HttpTester response = new HttpTester();
response.parse(tester.getResponses(request.generate()));

VALOIR ce que vous voulez vérifier la réponse et il est contenu:

assertEquals(200,response.getStatus()); 
assertEquals("Hello Servlet",response.getContent());

Je vous suggère de déplacer toute la logique d'affaires sur des classes de servlet, dans vos propres classes que vous pouvez tester. Cela laisse les servlets comme la colle entre votre logique métier et le conteneur, avec rien dans les tests de valeur.

Les classes API telles que HttpServletRequest, ServletConfig, etc, sont des cibles de choix pour l'utilisation d'un cadre moqueur de votre choix (JMock, Mockito, etc.), car ils sont toutes les interfaces.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top