JUnit
aus Wikipedia, der freien Enzyklopädie
JUnit ist ein Framework zum Testen von Java-Programmen, das besonders für automatisierte Unit-Tests einzelner Units (meist Klassen oder Methoden) geeignet ist. Es basiert auf Konzepten, die ursprünglich unter dem Namen SUnit für Smalltalk entwickelt wurden.
Ein JUnit-Test kennt nur zwei Ergebnisse: Entweder der Test gelingt (dann ist er „grün“) oder er misslingt (dann ist er „rot“). Das Misslingen kann als Ursache einen Fehler (Error) oder ein falsches Ergebnis (Failure) haben, die beide per Exception signalisiert werden. Der Unterschied zwischen den beiden Begriffen liegt darin, dass Failures erwartet werden, während Errors eher unerwartet auftreten. Technisch werden Failures mittels einer speziellen Exception namens „AssertionFailedError
“ signalisiert, während alle übrigen Exceptions vom JUnit-Framework als Error interpretiert werden.[1]
Hauptentwickler des JUnit-Frameworks sind Erich Gamma und Kent Beck.
JUnit ist ein wichtiges Hilfsmittel im Extreme Programming und unterstützt in diesem Zusammenhang die Idee des Extreme Testing. Dabei schreibt ein Programmierer zuerst einen automatisch wiederholbaren (JUnit-)Test und dann den zu testenden Code. Der Test ist selbst ein Stück Software und wird ebenso wie der zu testende Code programmiert. Wenn zu einem späteren Zeitpunkt ein anderer Programmierer den so entstandenen Code ändern möchte, so ruft er zuerst alle JUnit-Tests auf, um sich zu vergewissern, dass der Code vor seiner Änderung fehlerfrei ist. Dann führt er die Änderung durch und ruft die JUnit-Tests erneut auf. Misslingen diese, so weiß er, dass er selbst einen Fehler eingebaut hat und muss ihn korrigieren. Dieser Zyklus wiederholt sich solange, bis alle JUnit-Tests wieder „grün“ sind.
Dieses Verfahren wird auch „Testgetriebene Entwicklung“ (englisch test-driven software development) genannt und zählt zu den Agilen Methoden. Die Idee dabei ist, dass Fehlerfreiheit dadurch garantiert wird, dass nichts implementiert wird, was nicht auch getestet wird. Werden Testfälle erst nach dem Code entwickelt, so besteht die Gefahr, einen Testfall zu übersehen. Wenn dagegen die Testfälle bestimmen, was implementiert wird, sind sie per Definition vollständig.
Mittlerweile existieren JUnit-ähnliche Frameworks auch für viele andere Programmiersprachen. Oft werden diese Programme unter dem Namen xUnit zusammengefasst.
Eine Implementierung von JUnit für die Java 2 Platform Enterprise Edition (J2EE) ist Cactus (ehemals J2EEUnit) aus dem Jakarta-Projekt. Seit JEE 5 haben sich so genannte Out-of-container-Frameworks (zum Beispiel EJB3Unit) etabliert, die eine Ausführung von Tests außerhalb des Containers erlauben.
[Bearbeiten] Literatur
- Johannes Link: Softwaretests mit JUnit – Techniken der testgetriebenen Entwicklung. ISBN 3898643255
- Frank Westphal: Testgetriebene Entwicklung mit JUnit und FIT, ISBN 3898642208
- Klaus Meffert: JUnit Profi-Tipps – Software erfolgreich testen. ISBN 3935042760
[Bearbeiten] Weblinks
- JUnit Homepage (Englisch)
- DBUnit – JUnit-Erweiterung zum Testen von Datenbank-Applikationen (Englisch)
- EJB3Unit − JUnit-Erweiterung zum Testen von JEE-Applikationen (Englisch)
- JFCUnit – JUnit-Erweiterung zum Testen von Benutzeroberflächen (Englisch)
- Abbot Java GUI Test Framework – Automatisches Testen von Swing-Anwendungen
- JUnit-4.0-Neuerungen
- Entwurfsmuster mit JUnit testen (Singleton, Iterator)
[Bearbeiten] Quellen
- ↑ Mike Clark: What’s the difference between a failure and an error? in JUnit FAQ, 28. Dezember 2004 [6. Januar 2006]