JUnit

JUnit ist ein Framework zum automatisierten Test von Java-Klassen, das in die Gruppe der sogenannten Regression-Testing- Frameworks einzuordnen ist. Das als Open-Source verfügbare Framework wurde von Kent Beck und Erich Gamma konzipiert, unterliegt einer ständigen Weiterentwicklung und steht im Dezember 2009 in der Version 4.8.1 zur Verfügung. JUnit wird für Unit-, Komponenten- und White- Box-Test verwendet, und ist somit ein integraler Bestandteil der Qualitätssicherung von Software. Dazu bietet JUnit neben einer digitalen Entscheidung - "grün" für den erfolgreichen und "rot" für einen misslungenen Test - eine Reihe von statischen Methoden, die in die Tests integriert werden können.

JUnit als Test-Framework

Insbesondere im Umfeld der agilen Software-Entwicklung (z.B. XP, Extreme Programming) und im Rahmen der testgetriebenen Softwareentwicklung, dem Test Driven Development ( TDD), ist die Verwendung von Test-Frameworks wie JUnit eine grundsätzliche Voraussetzung für die anschließende, eigentliche Codierung.

JUnit realisiert den grundlegenden Gedanken von Unit Tests, der auf dem atomaren Test einzelner Teile einer Applikation (Units, Klassen, Methoden, Funktionen) unabhängig von der Integration in eine spezifische Umgebung basiert. Dabei ist JUnit ein Regressions-Testing-Framework, das nach jeder Änderung aus-geführt wird, und somit gewährleistet, dass Modifizierungen am Programmcode keine ungewollten Seiteneffekte zur Folge haben.

Um eine Klasse zu testen, muss ein sogenannter Testfall - komplett in Java geschrieben - für die entsprechende Klasse erstellt werden. Mehrere Testklassen können zu Test-Suiten zusammengeführt werden. Seit der Version 4 von JUnit werden bei der Erstellung der Testfälle die mit Java 1.5 definierten Annotationen - ein Ausdrucksmittel der Metaprogrammierung - eingesetzt. Dadurch kann der Programmcode mit frei wählbaren Anmerkungen versehen wer-den, und somit jede beliebige Methode jeder beliebigen Klasse als ausführbarer Testfall mit der @Test- Annotation gekennzeichnet werden. Zusätzlich werden weitere nützliche Annotationen wie z.B.

  • @Before und @After markieren Aufgaben, die für jeden Testfall wiederholt werden,
  • @BeforeClass und @AfterClass markieren Aufgaben, die nur einmal je Testklasse ausführt werden sollen und
  • @Ignore markiert temporär nicht auszuführende Testfälle,
zur Verfügung gestellt. JUnit bietet eine Reihe von Methoden, die in die Tests aufgerufen werden können, um sogenannte Zusicherungen (Assertions) zum Verhalten eines Programms zu machen. Hier stehen die folgenden Methoden zur Verfügung:

assertEquals(), assertNotEquals() Prü ft, ob zwei Objekte oder elementare Typen den gleichen Wert haben.

assertSame(), asserNotSame() Prüft, ob zwei Objekte dasselbe Objekt sind.

assertTrue(), assertFalse() Prüft einen booleschen Ausdruck.

assertNull(), asserNotNull() Prüft auf ein Null-Objekt.

Das textuelle TestRunner-Tool JUnitCore führt den Test dann aus und dokumentiert dessen Ergebnisse. Dabei kann das Resultat eines Tests nur "erfolgreich" oder "nicht erfolgreich" sein. Seit der Version 4 von JUnit ist die graphische Integration von JUnit ebenso wie Organisation der Testfälle konsequent Aufgabe der Hersteller der Entwicklungsumgebung.

Damit die Abhängigkeiten von Objekten insgesamt getestet werden können, muss die Testumgebung diese simulieren können. Hier verwendet man sogenannte Mock-Objekte, die Schnittstellen für die realen Abhängigkeiten zur Verfügung stellen und die die zum Testfall passenden Ergebnisse zurückgeben. Mock-Frameworks wie EasyMock ergänzen JUnit um diesen Aspekt, und stellen zusätzliche Dienste wie z.B. die Überprüfung der Anzahl der Methodenaufrufe zur Verfügung.

Aufgrund der parallelen Aktivitäten von Erich Gamma im Zusammenhang mit der Entwicklungsumgebung Eclipse, ist JUnit bereits komfortabel in Eclipse integriert, und soll so zur Erhöhung der Qualität von Softwarebausteinen beitragen. Aber auch andere gängige Entwicklungsumgebungen bieten die Integration von JUnit, siehe den genannten Link.

In Zusammenhang mit JUnit sei auch auf dessen Implementierung für Java EE - Cactus - sowie auf Erweiterungen wie HTTPUnit (ein Testframework für Webentwicklungen) und DBUnit (ein Testframework für Datenbank-Anwendungen) hingewiesen.

Eine Alternative zu JUnit bietet das Test-Framework TestNG, das Funktionalität über den Rahmen von JUnit hinaus -auch im Hinblick auf einen Integrationstest- bietet.

Informationen zum Artikel
Deutsch: JUnit
Englisch:
Veröffentlicht: 29.10.2013
Wörter: 631
Tags: Test und Auslieferung
Links: Framework, Test, Java, Framework, Gamma
Übersetzung: EN
Sharing: