Automatisierte Tests für Java-EE-Anwendungen

Automatisierte Tests für Java-EE-Anwendungen

Auf der diesjährigen Developer Week habe ich über das Thema Tests all the way down – Automatische Tests für Java EE auf allen Schichten gesprochen. Sebastian Daschner hatte bereits vor längerer Zeit die gleiche Idee und zeigt in diesem Video von der W-JAX mit Live-Coding, wie man Java-EE-Anwendungen automatisiert testen kann: Wer testet schon gerne? Kugelsicheres Java EE mit möglichst wenig Entwicklerfrustration.

Beide Vorträge zeigen, wie man alle üblichen Komponenten einer komplexen Anwendung in Java EE ohne manuellen Eingriff testen kann. Das Titelbild oben zeigt das Komponentendiagramm meiner Beispielanwendung für den Vortrag, die man sich bei GitHub anschauen kann: Automated tests for a Java EE 7 application. Ob Repositorys, Controller, Views oder Models – alle Bestandteile einer Webarchitektur lassen sich – sogar relativ einfach – testen. Und meist ist noch nicht einmal ein Tool dafür notwendig, sondern lediglich die saubere Trennung der Zuständigkeiten und der Einsatz von Dependency Injection.

Beim Aufbau der Testsuite sollte man sich allerdings an der Testpyramide orientieren: viele schnelle Unit-Tests (z.B. mit JUnit), weniger langsamere Integrationstests (z.B. mit Arquillian) und sehr wenige pflegeintensive Oberflächentests (z.B. mit Selenium). Wenn man das berücksichtigt, denkt man automatisch schon beim Programmieren der kleinsten Einheiten daran, wie man sie gut in Isolation testen kann. Und das allein ist schon viel wert, da man automatisch bei einem modularen Softwaredesign landet.


Wie testest du deine Webanwendungen? Nutzt du Frameworks wie Selenium für Oberflächentests oder beschränkst du dich auf Unit-Tests?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax