JUnit

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
JUnit
Entwickler u. a. Kent Beck und Erich Gamma
Aktuelle Version 4.12
(4. Dezember 2014)
Betriebssystem plattformübergreifend
Programmier­sprache Java
Kategorie Test-Framework
Lizenz Eclipse Public License[1]
Deutschsprachig nein
junit.org

JUnit ist ein Framework zum Testen von Java-Programmen, das besonders für automatisierte Unit-Tests einzelner Units (Klassen oder Methoden) geeignet ist. Es basiert auf Konzepten, die ursprünglich unter dem Namen SUnit für Smalltalk entwickelt wurden.

Mittlerweile existieren JUnit-ähnliche Frameworks auch für viele andere Programmiersprachen. Oft werden diese Programme unter dem Namen xUnit zusammengefasst.

Hauptentwickler des JUnit-Frameworks sind Erich Gamma und Kent Beck.

Funktionsweise[Bearbeiten]

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.[2]

JUnit im Softwareentwicklungsprozess[Bearbeiten]

JUnit ist ein wichtiges Hilfsmittel im Extreme Programming und unterstützt in diesem Zusammenhang die Idee des Extreme Testing.

Vorgehensweise[Bearbeiten]

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, fehlerarmen Code zu erzeugen, indem nichts implementiert wird, das nicht auch getestet wird. Werden Testfälle erst nach dem Code entwickelt, so ist die Wahrscheinlichkeit höher, wichtige Testfälle zu übersehen.

JUnit-Erweiterungen[Bearbeiten]

Eine Implementierung von JUnit für Java EE ist Cactus (ehemals J2EEUnit) aus dem Jakarta-Projekt. Seit JEE 5 haben sich sogenannte Out-of-container-Frameworks (zum Beispiel EJB3Unit) etabliert, die eine Ausführung von Tests außerhalb des Containers erlauben.

Erweiterungen zu JUnit erweitern JUnit für den Einsatz in bestimmten Bereichen (beispielsweise HTTPUnit für Webentwicklung, DBUnit für Datenbankentwicklung). Darüber hinaus gibt es noch Plugins für Entwicklungsumgebungen, die den Einsatz von JUnit innerhalb der Entwicklungsumgebung ermöglichen beziehungsweise erweitern (beispielsweise Infinitest für kontinuierliches Testen oder DJUnit für Berechnung der Code-Abdeckung, engl. "Code Coverage", der Tests).

Versionsgeschichte[Bearbeiten]

JUnit 4.0
In dieser Version wurde die Package-Struktur verändert. Alle Klassen finden sich nun in org.junit.*. Die Klassen aus Version 3.x sind ebenfalls enthalten, sie sind weiterhin unter junit.framework.* zu finden.[3]
JUnit 4.5
Support für das assertThat assert statement mit Hilfe des Hamcrest frameworks.[4]
JUnit 4.8
Tests können nun mit Kategorien markiert werden. Dadurch ist es möglich, nur Tests einer bestimmten Kategorie auszuführen.[5]
JUnit 4.9
ClassRule Annotation zur Definition von Regeln für Unit-Test-Klassen. [6]
JUnit 4.10
RuleChain zur Anordnung von Regeln, TemporaryFolder zur Anlage und Verwendung temporärer Dateien und Verzeichnisse. [7]
JUnit 4.11
FixMethodOrder zur sortierten Ausführung der Testmethoden.[8]

Siehe auch[Bearbeiten]

Literatur[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Relicense JUnit from CPL to EPL. Philippe Marschall. 18. Mai 2013. Abgerufen am 20. September 2013.
  2. Mike Clark: JUnit FAQ. What's the difference between a failure and an error? 28. Dezember 2004, archiviert vom Original am 30. Dezember 2004, abgerufen am 25. Oktober 2010 (englisch, Gilt für JUnit 3. Könnte sich geändert haben!): „Assertions are used to check for the possibility of failures, therefore failures are anticipated. Errors are unanticipated problems resulting in uncaught exceptions being propagated from a JUnit test method.“
  3. Frank Westphal: JUnit 4.0
  4. JUnit release notes
  5. "Release Notes" zu JUnit 4.8
  6. JUnit 4.9 released
  7. JUnit 4.10 released
  8. JUnit 4.11 is released