|
jsp-develop.de presents: Funktionstests mit HttpUnit |
| von shark, 13.01.2002 20:45:54 |
|
Einer der Eckpfeiler von XP sind funktionale Tests mit JUnit und HttpUnit. Jeder Entwickler kennt das Problem der Integration neuer Funktionen in eine Anwendung und die sich daraus ergebenden Programmfehler. Oftmals fehlt im Projektverlauf die Zeit, die komplette Anwendung neu zu testen, wodurch eine gewisse Unsicherheit entsteht die man gerne in Kauf nimmt, wenn der Kunde bereits zum Sprung angesetzt hat. Der Bedarf für ein Testframework mit dem Anwendungen automatisiert und komplett getestet werden können ist deshalb gross. HttpUnit ist ein Testframework, welcher das automatisierte Testen von Web-Anwendungen erlaubt. HttpUnit simuliert einen Web-Client, der Requests senden und Responses empfangen kann. Im zugrundeliegenden Request-/Response-Modell kann der Status eines Web-Clients ermittelt und ausgewertet werden. HttpUnit ist eine Open Source Software und kann unter folgendem Link bezogen werden: http://sourceforge.net/projects/httpunit Damit HttpUnit reibungslos funktioniert, muss das JTidy-Package installiert worden sein: http://sourceforge.net/projects/jtidy Die Klassen- bzw. Jar-Dateien beider Packages müssen im Java Classpath vorliegen. Das nachfolgende Beispiel zeigt ein sehr einfaches HttpUnit-Anwendungsbeispiel: <!-- Html-Seite in der nach der Eingabe eines Wertes auf die nachfolgende Seite "show.jsp" gesprungen wird. In der "show.jsp" Seite wird der zuvor eingegebene Wert ausgegeben. --> <html> <head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> <title>HttpUnit Testanwendung</title> </head> <body> <form action="show.jsp"> <font size="4"><b><u>HttpUnit-Test</u></b></font> <input type="text" name="eingabefeld" size="24"> <input type="submit" name="senden"> </form> </body> </html> <!-- "show.jsp" ist eine Seite zum Ausgeben des zuvor eingegebenen Wertes. --> <%@page language="java" contentType="text/html"%> <html> <head> <title>HtppUnit Testanwendung</title> </head> <body> <%String lstrEingabefeld = request.getParameter("eingabefeld");%> <%=lstrEingabefeld%> </body> </html> /* Die Klasse "TestCase" simuliert den Client-Browser und stellt somit auf Basis von HttpUnit eine Testumgebung fuer unser Beispiel dar. */ // Imports import com.meterware.httpunit.*; import java.io.IOException; import java.net.MalformedURLException; import org.xml.sax.*; // Testklasse public class TestCase { // Hauptfunktion public static void main(String[] params) { try { // Lokale Variablen WebRequest loRequest = null; WebResponse loResponse= null; // Initialisiere HttpUnit WebConversation loConversation = new WebConversation(); // Erzeuge einen Web-Request loRequest = new GetMethodWebRequest("http://localhost:80/test/index.html"); // Ermitteln der Response-Nachricht loResponse = loConversation.getResponse(loRequest); // Ausgabe des Requests und Responses System.out.println(loRequest); System.out.println("---------"); System.out.println(loResponse); System.out.println("---------"); // Ermitteln der Eingabeform WebForm testForm = loResponse.getForms()[0]; // Erzeuge Web-Request loRequest = testForm.getRequest(); // Setzen der Formparameter loRequest.setParameter("eingabefeld", "testwert"); // Ermitteln der Response-Message loResponse = loConversation.getResponse(loRequest); // Ausgabe des Requestes und Responses System.out.println(loRequest); System.out.println("---------"); System.out.println(loResponse); } catch (Exception ex) { System.err.println("Exception: " + ex); } } } Für die Kompilierung der Klasse "TestCase" gibt man in einer Dos-Box folgendes Kommando ein: "javac TestCase.java". Die compilierte Klasse "TestCase.class" kopiert man in den Java Classpath. Nach dem Starten einer neuen Dos-Box wird der Testfall durch Eingabe des Kommandos: "java TestCase" gestartet. Nach dem Starten des Testfalles sieht man in der Dos-Box die entsprechenden Request- und Response-Nachrichten. Das hier vorliegende Beispiel ist bewusst sehr einfach gehalten worden. Für komplexe Testfälle sollte die dem HttpUnit-Package beiliegende API-Beschreibung konsultiert werden. |
|
URL dieses Beitrags: http://www.jsp-develop.de/forumbeitrag/view/665/ |