Sie sind hier: Zum Anfang > Java WebApplications mit Eclipse > Unittests > Unittests mit Cactus | |||||
Java WebApplications mit EclipseWebApplications effizient entwickeln |
Cactus erweitert JUnit und liefert alles was zum Testen von Servlets, JSP-Seiten und Filtern gebraucht wird:
Nach dem Download des Cactus-Archivs (aktuell ist z.Z. Cactus-1.5) muss man zunächst dafür sorgen, dass alle Jar-Files, die auf der Server-Seite gebraucht werden im jeweiligen Container gefunden werden. Mit Tomcat geht das am einfachsten so, dass man die JARs aspectjrt.jar, cactus.jar, commons-logging.jar, commons-httpclient.jar und junit.jar (jeweils mit Versionsnummer) in den „common/lib“-Pfad von Tomcat kopiert. Alternativ kann man all diese JARs auch jeweils ins Lib-Verzeichnis der Web-Applikation kopieren. Dann steht die Testmöglichkeit mit Cactus eben nicht allen Web-Applikationen automatisch zur Verfügung, sondern immer nur der einen, die die JARs auch mitbringt.
Anschließend wird ein spezielles Servlet, der „ServletTestRunner“, entweder in der globalen web.xml oder in der web.xml der jeweiligen Applikation konfiguriert.
Die globale web.xml von Tomcat findet sich in „conf/web.xml“. Zwei Abschnitte sind einzufügen[7]:
Am Anfang:
<servlet>
<servlet-name>ServletTestRunner</servlet-name>
<servlet-class>
org.apache.cactus.server.runner.ServletTestRunner
</servlet-class>
</servlet>
Und am Ende:
<servlet-mapping>
<servlet-name>ServletTestRunner</servlet-name>
<url-pattern>/ServletTestRunner</url-pattern>
</servlet-mapping>
Als zweiten Schritt muss man nun noch einen Test schreiben, der ein Servlet testet und seiner Web-Applikation hinzufügen. Hierzu wird einfach eine Klasse erzeugt, die „ServletTestCase“ erweitert und ähnlich wie bei JUnit eine oder mehrere testXxx-Methoden enthält. Beispiel:
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
import de.rinke.SaveToSessionServlet;
public class TestServlets extends ServletTestCase
{
public TestServlets(String theName)
{
super(theName);
}
public static Test suite()
{
return new TestSuite(TestServlets.class);
}
public void beginSaveToSessionOK(WebRequest webRequest)
{
webRequest.addParameter("testparam", "it works!");
}
public void testSaveToSessionOK()
{
SaveToSessionServlet servlet = new SaveToSessionServlet();
servlet.saveToSession(request);
assertEquals("it works!", session.getAttribute("testAttribute"));
}
public void testHelloWorld() {
assertNotNull( null );
}
}
Wenn man ein solches Projekt anlegt und die richtige URL im Browser aufruft, wird der TestCase auf dem Server ausgeführt und das Ergebnis angezeigt (http://localhost:8080/tomcat-test/ServletTestRunner?suite=de.rinke.test.TestServlets):
Wenn man das Ganze noch etwas hübscher aussehen lassen will, kann man noch ein Stylesheet hinzufügen und schon sieht das so aus (http://localhost:8080/tomcat-test/ServletTestRunner?suite=de.rinke.test.TestServlets&xsl=cactus-report.xsl):
Das komplette Projekt kann man hier herunterladen.
[6] Leider funktioniert das aktuelle Cactus-Plugin nicht richtig mit Eclipse 2.1
Unittests mit Servlets |
| 1 | 2 | 3 | |
Download Java WebApplications mit Eclipse |