Domanda

Al momento sto utilizzando quadro TestNG per testare la logica di business dell'applicazione, ho aggiunto alcune classi Servlet di recente.

Come faccio a unità di prova queste classi Servlet in quadro TestNG?

È stato utile?

Soluzione

I consigli di Segui skaffman, se possibile. In caso contrario, o se si desidera testare il comportamento dei servlet come controller di front-end, piuttosto che la logica di business al loro interno, si può usare:

Altri suggerimenti

Uno dei modi più semplici è ServletTester dal molo. Tutto è fatto all'interno incorporato Jetty automaticamente, quindi non c'è alcuna porta aperta durante il test! Se si utilizza Maven oltre il successivo manufatto è necessario per attivare questo metodo:

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

Esempio:

Preparare ServletTester

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

Crea richiesta HTTP

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

servlet chiamata e recuperare la risposta:

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

Assert ciò che si desidera controllare sulla risposta e il suo contenuto:

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

Vi suggerisco di spostare tutta la logica di business il delle classi servlet, nelle proprie classi che è possibile testare. Che lascia la servlet proprio come collante tra la logica di business e il contenitore, con niente in loro la pena di test.

Le classi API quali HttpServletRequest, ServletConfig, ecc, sono obiettivi principali per l'utilizzo di un quadro beffardo di vostra scelta (JMock, Mockito, ecc), dal momento che sono tutte le interfacce.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top