Frage

Ich habe eine Reihe von servlets unter Tomcat servlet container.Ich möchte separaten test-code-aus der Produktion von code, die ich als eine test-framework.JUnit ist schön integriert in Eclipse, aber ich konnte nicht machen es laufen servlets mit einem Tomcat-server ausgeführt.Können Sie bitte empfehlen eine unit-Test-framework, unterstützt das testen von Tomcat servlets?Eclipse-integration ist schön, aber nicht notwendig.

War es hilfreich?

Lösung

Schauen Sie sich ServletUnit , welcher Teil von Httpunit ist. Auf den Punkt gebracht, bietet ServletUnit eine Bibliothek von Mocks und Dienstprogramme, die Sie in gewöhnlichen JUnit-Tests verwenden können, einen Servlet-Container und andere Servlet-bezogene Objekte wie Anfrage und Antwort Objekte zu verspotten. Der Link oben enthält Beispiele.

Andere Tipps

Das Spring Framework schön fertig gemacht Mock-Objekte für mehrere Klassen aus dem Servlet API hat:

http: //static.springframework.org/spring/docs/2.5.x/api/org/springframework/mock/web/package-summary.html

Okay. Das Ignorieren der ‚Kater‘ Bit und Codierung an das Servlet, Ihre beste Wette ist, spottet für die Antwort und Anfrage-Objekte zu erstellen, und dann sagen, was Sie davon erwarten.

Also für einen Standard leer doPost und mit EasyMock , Sie haben

public void testPost() {
   mockRequest = createMock(HttpServletRequest.class);
   mockResponse = createMock(HttpServletResponse.class);
   replay(mockRequest, mockResponse);
   myServlet.doPost(mockRequest, mockResponse);
   verify(mockRequest, mockResponse);
}

Starten Sie dann den Code zu dem doPost hinzufügen. Die Mocks wird scheitern, weil sie keine Erwartungen haben, und dann können Sie die Erwartungen von dort einzurichten.

Beachten Sie, wenn Sie EasyMock mit Klassen verwenden möchten, müssen Sie die EasyMock Klasse Erweiterung Bibliothek verwenden. Aber es wird von nun an die gleiche Art und Weise arbeiten.

Trennen Sie die Teile des Codes, die mit HTTP-Anfragen und Antwort von den Teilen zu tun, die Business-Logik oder DV-Manipulation zu tun. In den meisten Fällen produzieren diese eine Drei-Schichten-Architektur, mit einer Datenschicht (für die Daten-base / Persistenz), Service-Schicht (für die Business-Logik) und eine Präsentationsschicht (für die HTTP-Anfragen und Antworten).

  1. Sie können Einheit testen die ersten beiden Schichten ohne Servlet Sachen überhaupt; es wird einfacher sein, auf diese Weise zu testen.
  2. Sie können testen Sie die Präsentationsschicht, als andere vorschlagen, mock HTTP-Anfrage und Antwort Objekte verwendet wird.
  3. Schließlich, wenn Sie das Gefühl, es wirklich notwendig ist, können Sie Integrationstests mit einem zu wie Htmlunit oder JWebUnit .

Für "im Container" Tests haben einen Blick auf Cactus

Wenn Sie mögen, ohne laufende Behälter testen können, können Sie entweder simulieren ihre Komponenten mit Ihrem eigenen mockobjects (zB mit EasyMock ) oder Sie könnten versuchen, MockRunner , die für „vordefinierten“ Stubs hat Testen Servlets, JDBC-Verbindungen etc.

Aktualisiert Februar 2018:. OpenBrace Limited geschlossen und sein ObMimic Produkt wird nicht mehr unterstützt

Wenn Sie eine neuere Alternative zu ServletUnit für JUnit-Tests von Servlets wollen, könnten Sie meine Firma ObMimic Bibliothek finden nützlich. Es ist kostenlos erhältlich bei der Downloads Seite der Website.

Wie bei ServletUnit, es stellt eine Bibliothek von Klassen, die Sie in normalen JUnit oder TestNG Tests außerhalb eines Servlet-Container verwenden können, die Servlet-API zu simulieren.

Die Servlet-API-Objekte haben kein Argument Bauer, sind vollständig konfigurierbar und prüfbare für alle relevanten Servlet API Daten und Einstellungen sowie eine vollständige Simulation alles für das Verhalten von dem Servlet-API javadoc angegeben liefern. Um mit dem Testen ist es eine Unterstützung für eine selektive Erfassung von Servlet-API-Aufrufe, die Kontrolle über alle Behälter abhängiges Verhalten, Schecks für jede mehrdeutige Anrufe (dh wo das Servlet API behavour ist nicht vollständig definiert), und ein in-memory JNDI-Simulation für eine beliebige Servlet-Code, der auf JNDI Lookups angewiesen ist.

Für weitere Informationen, Beispielcode, "wie" Führer, Javadoc usw. finden Sie auf der Website.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top