2010-06-13 4 views
10

Ich möchte Sie fragen, welche Technologien es gibt, um Komponententests für JSPs zu erstellen.Unit Test JSPs

Ich kenne bereits die HtmlUnit/HttpUnit/JWebUnit/Selenium Möglichkeiten.

Vielen Dank!

Antwort

10

Ich würde sagen, dass das Testen einer Web-App (sei es JSP oder andere) über seine Web-Schnittstelle, mit einem der oben genannten Frameworks ist keine Unit-Tests im engeren Sinne. Komponententests bedeutet, dass Sie kleine Teile Ihrer App (eine Methode, eine Klasse) isoliert testen. Mit einem Web-Framework testen Sie die Web-App als Ganzes, also ist das eher ein System- oder Integrationstest. Was nicht heißt, dass es nicht nützlich ist - im Gegenteil - es ist nur besser, die Terminologie zu klären.

Mit dem gesagt, wenn ich eine JSP testen würde, würde ich höchstwahrscheinlich mit einem Systemtest aller spezifischen Szenarien, die mit der JSP verbunden sind, zufrieden sein, unter Verwendung einiger der oben erwähnten Werkzeuge.

Wenn Sie jedoch wirklich „klassische“ Unit-Tests wollen, nehme ich an die nächstgelegene Sie bekommen Ihre JSP in ein Servlet-Klasse kompiliert wird, dann direkt auf die Servlet-Methoden aufrufen (von zB JUnit, einen Mockframework wie EasyMock mit zu bereiten Sie die HTTP-Anfrage, die Antwort usw. vor).

Update: IMO der einzige Grund, Unit-Tests für eine JSP zu benötigen, ist, wenn Sie Geschäftslogik drin haben. Dies wiederum widerspricht der Trennung von UI und Business-Schicht. Daher ist es besser, die App neu zu gestalten und die Logik in ein separates POJO zu verschieben (wenn Sie die Wahl haben), als wenn Sie versuchen, erfundene Komponententests zu schreiben, um Geschäftslogik zu testen, wo sie nicht hingehört.

+0

Ja, ich weiß, dass HtmlUnit und die anderen Integrationstests sind und keine Komponententests. Der Grund, warum ich sie erwähnt habe, ist, dass ich wusste, dass die Leute sie als Optionen erwähnen werden, und ich wollte Zeit sparen. Aber wie auch immer, danke für deine Antwort :) –

+0

@Avi, in der Zwischenzeit habe ich ein paar weitere Gedanken dazu, siehe mein Update. –

+1

+1: Das ist eine kluge Antwort. Setzen Sie Ihre Geschäftslogik in etwas, das testbar ist, und halten Sie Ihre JSP so einfach, dass sie unter der Überschrift "offenkundig keine Fehler" (anstatt "keine offensichtlichen Fehler") steht. –