Ich hätte nicht gedacht, dass ich zu diesem eigentlich einfachen Thema einen Blog Eintrag verfassen muss. Ich bin aktuell auf der Suche nach einem Einfachen Unit Test Tool in Java, welches für Unit Tests im Web geeignet ist. Folgende Voraussetzungen:
- Liste mit URLs einer REST ähnlichen Anwendungen ist vorhanden, in dieser Liste ist definiert unter welcher URL mit welcher Methode ein bestimmtes Format (meistens JSON) zurückgeliefert wird. Außerdem kenne ich das Aussehen des JSON Formates
- Jetzt will ich diese Liste URL für URL abarbeiten, d.h.
- URL und Nutzdaten für den Request zusammenbauen
- Request verschicken
- Antwort kontrollieren, ob kein Fehler (abseits eines HTTP Error Codes) aufgetreten ist
- Daten aus der Antwort weiter verwenden (ergo muss ich das JSON parsen) für den nächsten Request
- Bisher habe ich mir angeschaut:
- JUNit, kein Support für HTTP
- Canoo Web Test - viel zu kompliziert zum Aufbauen der Queries (ich will keine URL Klassen oder sonst was benutzen, das soll bequem abstrahiert sein), abgesehen davon kommt ja auch hier nur der Groovy Teil in Frage. Auf wildes XML Definiere habe ich überhaupt keine Lust
- HttpUnit - Ebenfalls nur gut geeignet, wenn man Homepages testen will, allerdings nicht für reine service basierte URLs
- Im Moment bastle ich eine kleine "Homegrown" Lösung, welche Request und Response fein unterteilt, so dass ich je nach Request unterschiedlich Responses verarbeiten kann (mal XML, mal JSON). Beides basiert auf dem Jakarta HttpClient in der Version 3 (der 4er ist ja total unübersichtlich und Speed ist mir weitestgehenst egal, mir geht es um schnelle Implementierung). Leider habe ich da natürlich nicht dieselben schönen Ergebnisse wie bei Tests - einer der Kernnachteile
Die Frage ist jetzt natürlich. Warum will ich das? Die Lösung ist aber relativ einfach. Nehmen wir an, wir teilen die Erstellung einer Webanwendung sehr strikt nach Front- und Backend auf. Dann muss es eine Komponente geben, welche die Verbindung zwischen Frontend und Backend kontrolliert, um sicher zu stellen, dass der Frontend Entwickler seine Arbeit überhaupt problemlos machen kann. Des Weiteren definiert man so einen Kontrakt, den man problemlos an alle Frontendentwickler geben kann, und diese nun nach Belieben Frontends erstellen können (z.B. GWT-Client, PHP, Java, WebService, Dojo).
Also für jegliche Hinweise (ich bin mir absolut sicher, hier etwas übersehen zu haben) wäre ich mehr als dankbar. Eventuell suche ich ja auch total falsch und irgendwelche reinen JavaScripts Tools haben das schon vollständig integriert - wie funktionieren eigentlich die Dojo-JS-Tests fällt mir dabei ein?