Das [HttpUnitProtocol] ist ein Protocol für die [ProtocolFactory] für die Integration der [HttpUnit|http://en.wikipedia.org/wiki/HttpUnit]. [HttpUnitProtocol] ist ein Bestandteil von [Intersult Testing].

!!!Anwendung
[HttpUnitProtocol] ist zunächst ein Protocol, das durch einen einfachen Aufruf mit der [ProtocolFactory] aktiviert wird.

Damit können WAR-Projekte direkt getestet werden, ohne über das TCP/IP-System zu gehen. Es wird eine direkte Stream-Verbindung (java.io) zwischen dem Aufrufer und dem Servlet hergestellt. Die Server-Komponenten können dabei direkt über die web.xml definiert werden, sodass ein WAR-Projekt direkt aufgerufen werden kann.

Das [HttpUnitProtocol] kann für die Konfiguration von anderen Komponenten wie [Abraxas] verwendet werden.

!Parameter
Das [HttpUnitProtocol] unterstützt einige Parameter zur Konfiguration:

||Parameter||Bedeutung
|webXmlFile|Der Pfad an dem sich die web.xml-Datei befindet, Standard ist "src/main/webapp/WEB-INF/web.xml"
|contextPath|Der Kontext-Pfad der laufenden Web-Anwendung, also http://localhost/<contextPath>/..." Standard ist "/".
|translateProtocol|Standard ist, dass die Web-Anwendung im Aufruf-URL als Protocol einen URL mit "unit://localhost/..." übergeben bekommt. Meist ist dies nützlich, da die Links auf Web-Seiten so auch wieder auf das Protocol verweisen. Einige Anwendungen können damit Probleme haben, daher kann dieses Verhalten durch den Wert false abgeschaltet werden. In diesem Fall wird die URL zu "http://localhost/..." übersetzt.

!!!Beispiele
!Echo-Servlet
{{{
	String message = "Hello World!";
	URL url = new URL("unit://localhost/echo");
	HttpUnitConnection connection = (HttpUnitConnection)url.openConnection();
	connection.setDoOutput(true);
	connection.addRequestProperty("Content-Type", "text/xml");
	IOUtils.write(connection.getOutputStream(), message);
	String response = IOUtils.readString(connection.getInputStream());
	Assert.assertEquals(message, response);
}}}

Und in der web.xml:

{{{
    <servlet>
        <servlet-name>EchoServlet</servlet-name>
        <servlet-class>com.intersult.testing.EchoServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    	<servlet-name>EchoServlet</servlet-name>
    	<url-pattern>/echo</url-pattern>
    </servlet-mapping>
}}}