---
title: 'Einfaches Testen von Servlets mit string-test'
url: 'https://tutego.de/blog/javainsel/2010/05/einfaches-testen-von-servlets-mit-string-test'
markdown: 'https://tutego.de/blog/javainsel/2010/05/einfaches-testen-von-servlets-mit-string-test.md'
date: '2010-05-26'
description: 'Servlets zu schreiben gehört nun nicht gerade zu meinem Alltagsaufgaben, aber für ein JSON-Endpoint muss ein Servlet nun doch mit ins Boot. (REST-API geht leider nicht.) Einen Test dafür zu schreiben finde ich selbstverständlich, da ich geil auf grüne Balken bin (nein, nicht die Download-Balken). E…'
taxonomy:
  category:
    - 'Open Source'
    - 'Web Frameworks'
---

# Einfaches Testen von Servlets mit string-test

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Einfaches Testen von Servlets mit string-test

26.05.2010 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Servlets zu schreiben gehört nun nicht gerade zu meinem Alltagsaufgaben, aber für ein JSON-Endpoint muss ein Servlet nun doch mit ins Boot. (REST-API geht leider nicht.) Einen Test dafür zu schreiben finde ich selbstverständlich, da ich geil auf grüne Balken bin (nein, nicht die Download-Balken). Es kommen für Servlet-Tests unterschiedliche Ansätze in Betracht, die sich grundsätzlich in 2 Gruppen einteilen lassen:

- Tests mit einem echten (embedded) Servlet-Container
- Mock-Tests

Dass ich ein Jetty-Fan bin ist vielleicht schon in früheren Posts rübergekommen, aber hier lasse ich meinen Lieblingsserver links liegen und gehe auf die Mock-Tests. Gut funktioniert für mich [spring-test](http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/testing.html#mock-objects-servlet). Ein Beispiel.

Das Servlet:

```java
package com.tutego.traida.server.service.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
```

import `javax.servlet.http.HttpServlet`; import `javax.servlet.http.HttpServletRequest`; import `javax.servlet.http.HttpServletResponse`;

```java
public class Raplet extends HttpServlet
{
 private static final long serialVersionUID = 6942655630840028053L;

 @Override
```

protected void `doGet( HttpServletRequest req, HttpServletResponse resp )` throws `ServletException`, `IOException`

```java
 {
 resp.getWriter().print( "hello " + req.getParameter( "name" ) );
 }
}
```

Der Test:

```java
package com.tutego.traida.server.service.servlet;

import javax.servlet.ServletException;
import org.junit.*;
import static org.junit.Assert.*;
import org.springframework.mock.web.*;

public class RapletTest
{
 private Raplet servlet = new Raplet();
 private MockHttpServletRequest request;
 private MockHttpServletResponse response;

 @Before
 public void before() throws ServletException
 {
 servlet.init( new MockServletConfig() );

 this.servlet = new Raplet();
 this.request = new MockHttpServletRequest();
 this.response = new MockHttpServletResponse();
 }

 @Test
 public void doGetTest() throws Exception
 {
 request.setParameter( "name", "tutego" );

 servlet.doGet( request, response );

 assertEquals( "hello tutego", response.getContentAsString() );
 }
}
```

Einfacher geht’s nun wirklich nicht mehr.

Zum Ablaufen des Tests packe in den Klassenpfad:

- 
- 

Zwar bin ich kein Spring Fan Boy, aber mit 2 Archivdateien brennt die Jar-Hölle nicht so heiß ([die Abhängigkeiten sind übertrieben](http://grepcode.com/static/data/html/repo1.maven.org%24maven2/org.springframework%24spring-test/3.0.2.RELEASE/visualization.svg)).

Kategorien: [Open Source](https://tutego.de/blog/javainsel/category/open-source/), [Web Frameworks](https://tutego.de/blog/javainsel/category/web-frameworks/)

## 3 Kommentare

**Martin** · [26.02.2014 12:33](#comment-5645)

Das Feld servlet wird zweimal gesetzt, was wahrscheinlich nicht gewollt ist. ```java public class RapletTest { private Raplet servlet = new Raplet(); @Before public void before() throws ServletException { servlet.init( new MockServletConfig() ); this.servlet = new Raplet(); } } ```

**Christian Ullenboom** · [07.08.2010 22:08](#comment-3423)

Wie meinst du? Der Test braucht ja eben keinen Servlet-Container, also weder Jetty noch Tomcat. Oder meinst du für in-container-tests? Cactus ist quasi tot...

**Dirk Schesmer** · [05.08.2010 19:50](#comment-3418)

Hallo, vielen Dank für die Starthilfe, das funktioniert wirklich prima! Hast Du auch etwas Ähnliches für Jetty und vielleicht auch Erfahrung mit mit cactus und Tomcat 6 ? Danke, Dirk

Die bisherigen Kommentare wurden aus WordPress übernommen. Neue Kommentare sind derzeit geschlossen.

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [com.google.appengine.api.datastore.* Typen für GWT serialisieren](https://tutego.de/blog/javainsel/2010/05/com-google-appengine-api-datastore-typen-fr-gwt-serialisieren.md)
- Next: [Thema der Woche: java.util.Collections, java.util.Arrays](https://tutego.de/blog/javainsel/2010/05/thema-der-woche-java-util-collections-java-util-arrays.md)
