Jetzt schreibe ich den Testfall meiner Klasse. Ich möchte den HttpServletRequest-Objektparameter an meine Testfallmethode übergeben, um zu überprüfen, ob die Methode funktioniert oder nicht. Also gib mir irgendeinen Vorschlag dazu.
%Vor% HttpServletRequest
ist eine Schnittstelle. In der Vergangenheit habe ich einfach eine Klasse (z. B. TestHttpServletRequest
) erstellt, die für jede Methode in HttpServletRequest
einen leeren Methodenhauptteil hatte, außer für die, die ich tatsächlich benötigte. Bei den meisten Methoden habe ich eine Instanzvariable zurückgegeben und einen Setter für diese Instanzvariable eingefügt, sodass der Testfall definieren kann, was zurückgegeben werden soll. HttpServletRequest
hat viele Methoden, aber die meisten IDEs (ich benutze Eclipse) kann die Methode Stubs generieren.
Das Problem mit HttpServletRequestWrapper
ist, dass es immer noch ein weiteres HttpServletRequest
benötigt, das in seinen Konstruktor übergeben wird, um als Standardverhalten für jede Methode zu dienen. Die Weitergabe von null
führt zu einem NullPointerException
.
Spring bietet eine Klasse namens MockHttpServletRequest , mit dem Code getestet werden kann, der eine HttpServletRequest benötigt.
%Vor%Aktualisiert im Februar 2018: OpenBrace Limited wurde geschlossen und sein ObMimic-Produkt wird nicht mehr unterstützt.
Sie können auch die ObMimic Bibliothek des Servlet-API-Test-Doubles verwenden:
%Vor%Um die Anfrage zu konfigurieren, verfügt das HttpServletRequestMimic über eine getMimicState () -Methode, die einen HttpServletRequestState zurückgibt, über den alle relevanten Details der Anfrage konfiguriert werden können (und über den Sie alle zugehörigen ServletContext, HttpSession usw. aufrufen und bei Bedarf konfigurieren können) ). Die Dokumentation für den HttpServletRequestState enthält eine Zusammenfassung seiner Eigenschaften und Methoden wie ausführlich Javadoc .
Beachten Sie Folgendes:
ObMimic stellt auch ähnliche "mimic" -Klassen für HttpServletResponse, ServletContext, HttpSession, ServletConfig usw. zur Verfügung.
Eine kostenlose "Community Edition" von ObMimic ist auf der Website download Seite.
Die einzige Bibliothek, die Sie Ihrem Projekt hinzufügen müssen, ist Obmimics /lib/obmimic.jar (vorausgesetzt, die Servlet-API selbst ist bereits vorhanden).
Die ObMimic Website bietet vollständige Dokumentation, einschließlich einer Erste Schritte , ein Satz von How To führt mit Beispielcode detaillierte Javadoc usw.
Unter Verwendung der von tomcat angegebenen API können Sie das HttpServletRequest-Objekt
abrufen %Vor%Dadurch wird die letzte Anforderung, die vom aktuellen Thread an ein Servlet zur Wartung übergeben wurde, abgerufen.
Dies funktioniert nur im Strict-Servlet-Compliance-Modus von Tomcats. Um es zu aktivieren Fügen Sie folgenden JVM-Parameter hinzu:
%Vor%Tags und Links java unit-testing junit