This page (revision-21) was last changed on 26-Jun-2012 13:47 by Dieter Käppel

This page was created on 27-Apr-2012 07:09 by Dieter Käppel

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
21 26-Jun-2012 13:47 5 KB Dieter Käppel to previous

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 1 changed one line
Das [ServletUnitProtocol] ist ein Protocol zum direkten Aufruf von Web-Applikationen. [ServletUnitProtocol] ist Bestandteil von [Intersult Testing] und für die [ProtocolFactory] geeignet. Falls eine Browser-Simulation eingesetzt werden soll, kann [HtmlClient] verwendet werden.
Das [ServletUnitProtocol] ist ein Protocol zur Integration der [HttpUnit|http://en.wikipedia.org/wiki/HttpUnit]. [ServletUnitProtocol] ist Bestandteil von [Intersult Testing] und für die [ProtocolFactory] geeignet. Falls eine Browser-Simulation eingesetzt werden soll, kann [HtmlClient] verwendet werden.
At line 8 changed one line
Das [ServletUnitProtocol] kann für die Konfiguration von anderen Komponenten verwendet werden, wie zum Beispiel [Abraxas].
Das [ServletUnitProtocol] kann für die Konfiguration von anderen Komponenten wie [Abraxas] verwendet werden.
At line 14 changed one line
|webXmlFile|Der Pfad an dem sich die web.xml-Datei befindet, Standard ist "src/main/webapp/WEB-INF/web.xml". Bei einer gefilterten Web-Application (Variablenersetzung), kann auch target/<finalname>/WEB-INF/web.xml verwendet werden.
|webXmlFile|Der Pfad an dem sich die web.xml-Datei befindet, Standard ist "src/main/webapp/WEB-INF/web.xml"
At line 23 changed one line
ServletUnitConnection connection = (ServletUnitConnection)url.openConnection();
HttpUnitConnection connection = (HttpUnitConnection)url.openConnection();
At line 63 changed one line
ServletUnitProtocol protocol = new ServletUnitProtocol("/name");
HttpUnitProtocol protocol = new HttpUnitProtocol("/name");
At line 82 changed one line
Der ServletContainer stellt eine leichtgewichtige Implementierung der Servlet-API dar. Die Implementierung umfasst Servlets, Servlet-Filter, Sessions und weitere Teile. Daher können die meisten Anwendungen getestet werden, die auf einer web.xml basieren (als WAR gepackt werden).
[HttpUnit|http://en.wikipedia.org/wiki/HttpUnit] stellt eine leichtgewichtige Implementierung der Servlet-API dar. Die Implementierung umfasst Servlets, Servlet-Filter, Sessions und weitere Teile. Daher können die meisten Anwendungen getestet werden, die auf einer web.xml basieren (als WAR gepackt werden).
At line 85 changed one line
Wenn dazu JSPs verwendet werden sollen, kann das [TomcatUnitProtocol] verwendet werden. Es ist eine Erweiterung des [ServletUnitProtocol], das alle Abhängigkeiten mitbringt um die Einheit zum Compilieren der JSPs zu registrieren.
HttpUnit alle wesentlichen Bestandteile, um JSPs zu verwenden. Dazu sind die folgenden Artifakte hinzuzufügen:
At line 87 changed 2 lines
!HtmlClient
[ServletUnitProtocol] simuliert einen Servlet-Container, die hinter einer HttpURLConnection gekapselt ist.
!JSP mit Tomcat 5
{{{
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper</artifactId>
<version>3.3.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler</artifactId>
<version>5.5.23</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>tomcat-util</artifactId>
<version>5.5.23</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>core_util</artifactId>
<version>3.3.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.4.2</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
}}}
At line 90 changed one line
Die Simulation eines Browsers kann dann mit der von [ServletUnitProtocol] unabhängigen Software [HtmlClient] erfolgen, da diese systemkonform über die URLConnection geht. Dadurch sind Server- und Client entkoppelt, können daher beliebig simuliert, getestet und ausgetauscht werden.
__Erklärung:__ Jasper ist eine Compilier-Einheit für JSPs, die unter anderem in Tomcat verwendet wird. Zusätzlich wird tools.jar aus der bestehenden Java-Installation hinzugefügt, weil Jasper den Java-Compiler nutzt.
At line 124 added 58 lines
!JSP mit Tomcat 7
Bei Tomcat 7 ist die Konfiguration anders, weil er die Embedded Libraries mitbringt, eine eigene JSP-API und den Eclipse-JDT-Compiler verwendet:
{{{
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>${tomcat-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-juli</artifactId>
<version>${tomcat-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-log4j</artifactId>
<version>${tomcat-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>${tomcat-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>3.7</version>
<scope>test</scope>
</dependency>
}}}
Dazu kommt der Tomcat-Instance-Manager, der gewöhnlich beim Starten des Tomcat erzeugt wird. Da durch [ServletUnitProtocol] kein Tomcat gestartet wird, injeziert man den InstanceManager selbst in den Servlet-Context:
{{{
StandardContext context = new StandardContext();
context.setLoader(new WebappLoader(Thread.currentThread().getContextClassLoader()));
Map<String, Map<String, String>> injectionMap = new HashMap<String, Map<String,String>>();
InstanceManager instanceManager = new DefaultInstanceManager(null, injectionMap, context, Thread.currentThread().getContextClassLoader());
HttpUnitProtocol protocol = new HttpUnitProtocol("/test");
protocol.getRunner().setContextParameter(InstanceManager.class.getName(), instanceManager);
}}}
!HttpUnit und HtmlClient
[HttpUnit|http://en.wikipedia.org/wiki/HttpUnit] ist eine Software zur Simulation eines Servlet-Container. Zusätzlich enthält HttpUnit weitere Teile zur Simulation eines Browsers, die von [ServletUnitProtocol] nicht verwendet werden. Mit der URLConnection ist die Simulation eines Servlet-Containers abgeschlossen.
Die Simulation eines Browsers kann dann mit einem [HtmlClient] erfolgen, der systemkonform über die URLConnection geht. Dadurch sind Server- und Client völlig entkoppelt, können daher beliebig simuliert und getestet werden.
At line 96 changed one line
__Antwort:__ Es wurde versucht JSPs zu rendern, das kann mit [TomcatUnitProtocol] durchgeführt werden.
__Antwort:__ Es sind folgende [Bibliotheken|http://www.intersult.com/wiki/Wiki.jsp?page=HttpUnitProtocol#section-HttpUnitProtocol-JavaServerPagesJSP] einzubinden.