unit-test ein servlet, das einen eingebetteten Jetty
Wie können wir den unit-test ein servlet, das einen eingebetteten Jetty-server?
Beispielsweise, wie zu testen die servlet-Methode unten?
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//any logic inside
}
InformationsquelleAutor blue123 | 2013-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich wesentlich lieber testen von servlets mit einer eingebetteten Instanz von jetty mit so etwas wie junit zu bootstrap.
http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/MinimalServlets.java
ist das minimal-Beispiel, wie es zu tun.
Dies ist auch, wie wir testen die überwiegende Mehrheit der Steg selbst, starten Sie es und läuft es auf Herz und Nieren.
Für ein bestimmtes servlet oder einer Prozedur verwenden wir oft das jetty-client oder ein SimpleRequest in unserem jetty-test-helper-Artefakt. Eine URLConnection so gut funktioniert.
http://git.eclipse.org/c/jetty/org.eclipse.jetty.toolchain.git/tree/jetty-test-helper/src/main/java/org/eclipse/jetty/toolchain/test/SimpleRequest.java
Hier ist ein test in der jetty-client, ist es für den jetty-9 wenn Sie so wollen, 7 oder 8 dann schauen Sie unter dem entsprechenden tag, es wurde umgestaltet werden, ganz ein bisschen in jetty-9.
http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java
Hinweis: ich empfehle Ihnen, übergeben Sie 0 als port für jetty zu starten und geben Ihnen einen zufälligen port öffnen, die Sie können, dann ziehen Sie aus Anlegestelle für Testzwecke, dies vermeidet die situation, wo mehrere builds ausgeführt werden, die auf CI oder parallel baut, wo es könnte ein port-Konflikt.
InformationsquelleAutor jesse mcconnell
Brauchen Sie nicht Steg zum testen der Servlets, benötigen Sie einen unit-Test-Frameworks wie JUnit, Mockito, JMock, etc.
Allgemein gesprochen, die Sie nicht verwenden möchten, ein servlet-container, wenn Sie unit-Tests, weil Sie sich konzentrieren möchten, den test auf die tatsächliche Methode, die getestet wird, mit Steg in der Weise bedeutet, dass Sie sich auch testen jetty Verhalten. Nachdem Sie dies getan haben alle Ihre unit-tests, die Sie bewegen können, um integration tests und system-tests, und dieser Teil kann externe Systeme wie z.B. jetty (mit automation frameworks wie Selen.)
Benutze ich Mockito und PowerMock zu tun, meine unit-Tests, die Sie heraus überprüfen können dieser code für ein Beispiel für eine echte online-service (die Sie hier finden können hier).
Ich schrieb ein tutorial über diesen Dienst und was es enthält, kann diese gefunden werden hier.
[Hinzugefügt nach immer downvotes von Zeit zu Zeit auf diese Antwort]: Und auf die Gefahr, sich noch mehr downvotes, alles, was Sie downvoters Lesen müssen, die definition von UNIT-TESTS, bevor Sie auf den -1 button. Sie wissen einfach nicht, wovon du redest.
Nicht einverstanden mit der obigen Antwort, ist es besser zu testen, wie Ihr servlet verhält sich während der Sitzung in einem JEE-container, wie das ist, wie es laufen wird, im realen Leben. Besser zu wissen, wie der code funktioniert im wirklichen Leben, als in einer verspottet-up-Objekt.
Ich unterstütze diese Antwort, die Frage wird insbesondere erwähnt, 'unit-test'. Wenn OP will run-integration-tests, dann ist der Titel falsch ist.
Dieser Ansatz funktioniert nicht, ein Umfeld zu schaffen, dass die tests auf client-code, der tatsächlich öffnet eine Netzwerk-Verbindung -- mocks nicht mit Servern erstellen, diese enorm erschwert testen von code davon ausgehen, dass eine Netzwerk-Verbindung.
Sie sind richtig in Ihrer Aussage, dass es keine Unterstützung für Netzwerk-verbindungen, aber wenn Sie die Kommentare Lesen, werden Sie verstehen, dass wir reden über unit-Tests nicht die integration-tests. In der Tat, wenn unit-Tests in javascript (oder anderen client-code), die Sie gefälschte Netzwerk-verbindungen, um zu verhindern, dass Netzwerk-Probleme aus Auswirkungen auf Ihre Testergebnisse. Sie nicht möchten, dass ein unit test fehlschlägt (was folgert ein code-problem), weil jemand unplugged Netzwerk Kabel...
InformationsquelleAutor TheZuck