<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=JUnit</id>
	<title>JUnit - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=JUnit"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=JUnit&amp;action=history"/>
	<updated>2026-05-24T01:04:59Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=JUnit&amp;diff=32699&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=JUnit&amp;diff=32699&amp;oldid=prev"/>
		<updated>2025-12-06T01:28:14Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
|Name                  = JUnit&lt;br /&gt;
|Logo                  = &lt;br /&gt;
|Screenshot            = &lt;br /&gt;
|Beschreibung          = &lt;br /&gt;
|Maintainer            = &lt;br /&gt;
|Hersteller            = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
|Erscheinungsjahr      = &lt;br /&gt;
|Management            = &lt;br /&gt;
|AktuelleVersion       = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
|AktuelleVersionFreigabeDatum = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
|AktuelleVorabVersion  = &lt;br /&gt;
|AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
|Programmiersprache    = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
|Betriebssystem        = [[plattformübergreifend]]&lt;br /&gt;
|Kategorie             = [[Modultest|Test]]-[[Framework]]&lt;br /&gt;
|Lizenz                = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
|Deutsch               = nein&lt;br /&gt;
|Website               = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
|Dateien               = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JUnit&amp;#039;&amp;#039;&amp;#039; ist ein [[Framework]] zum [[Modultest|Testen]] von [[Java (Programmiersprache)|Java]]-Programmen, das besonders für automatisierte [[Unit-Test]]s einzelner &amp;#039;&amp;#039;Units&amp;#039;&amp;#039; ([[Klasse (objektorientierte Programmierung)|Klassen]] oder [[Objektorientierte Programmierung#Methoden|Methoden]]) geeignet ist. Anfänglich wurde JUnit von [[Erich Gamma]] und [[Kent Beck]] entwickelt. Es basiert auf Konzepten, die ursprünglich unter dem Namen [[SUnit]] für [[Smalltalk (Programmiersprache)|Smalltalk]] entwickelt wurden.&lt;br /&gt;
&lt;br /&gt;
Mittlerweile existieren JUnit-ähnliche Frameworks auch für viele andere [[Programmiersprache]]n. Oft werden diese Programme unter dem Namen &amp;#039;&amp;#039;[[xUnit]]&amp;#039;&amp;#039; zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
&lt;br /&gt;
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 (&amp;#039;&amp;#039;Error&amp;#039;&amp;#039;) oder ein falsches Ergebnis (&amp;#039;&amp;#039;Failure&amp;#039;&amp;#039;) haben, die beide per [[Exception]] signalisiert werden. Der Unterschied zwischen den beiden Begriffen liegt darin, dass &amp;#039;&amp;#039;Failures&amp;#039;&amp;#039; erwartet werden, während &amp;#039;&amp;#039;Errors&amp;#039;&amp;#039; eher unerwartet auftreten. Technisch werden &amp;#039;&amp;#039;Failures&amp;#039;&amp;#039; mittels einer speziellen Exception namens &amp;#039;&amp;#039;AssertionFailedError&amp;#039;&amp;#039; signalisiert, während alle übrigen Exceptions vom JUnit-Framework als &amp;#039;&amp;#039;Error&amp;#039;&amp;#039; interpretiert werden.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Mike Clark |url=http://junit.sourceforge.net/doc/faq/faq.htm#tests_9 |titel=JUnit FAQ |titelerg=What’s the difference between a failure and an error? |datum=2004-12-28 |archiv-url=https://web.archive.org/web/20041230003640/http://junit.sourceforge.net/doc/faq/faq.htm#tests_9 |archiv-datum=2004-12-30 |abruf=2010-10-25 |sprache=en |kommentar=Gilt für JUnit 3. Könnte sich geändert haben! |zitat=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. |offline=1}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JUnit im Softwareentwicklungsprozess ==&lt;br /&gt;
&lt;br /&gt;
JUnit ist ein wichtiges Hilfsmittel im [[Extreme Programming]] und unterstützt in diesem Zusammenhang die Idee des &amp;#039;&amp;#039;[[Extreme Testing]]&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Vorgehensweise ===&lt;br /&gt;
&lt;br /&gt;
Dabei schreibt ein [[Programmierer]] zuerst einen automatisch wiederholbaren (JUnit-)Test und dann den zu testenden [[Quellcode|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 fehlerfrei durchlaufen.&lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren wird auch „[[testgetriebene Entwicklung]]“ ([[Englische Sprache|englisch]] &amp;#039;&amp;#039;test-driven software development&amp;#039;&amp;#039;) genannt und zählt zu den [[Agile Methode|agilen Methoden]]. Die Idee dabei ist, fehlerarmen Code zu erzeugen, indem nichts implementiert wird, was nicht auch getestet wird. Werden Testfälle erst nach dem Code entwickelt, so ist die Wahrscheinlichkeit höher, wichtige Testfälle zu übersehen.&lt;br /&gt;
&lt;br /&gt;
==Beispiel einer JUnit Testklasse==&lt;br /&gt;
JUnit Testcases werden als Methoden in Klassen deklariert. Für die Initialisierung oder Erstellung von Testdaten können Methoden definiert werden, die vor oder nach Testcases ausgeführt werden.&amp;lt;ref name=&amp;quot;JUnit 5 User Guide: Writing Tests&amp;quot;&amp;gt;{{Internetquelle | url=https://junit.org/junit5/docs/current/user-guide/#writing-tests | titel=Writing Tests | abruf=2023-12-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Java&amp;gt;&lt;br /&gt;
import org.junit.jupiter.api.*;&lt;br /&gt;
&lt;br /&gt;
class Testklasse {&lt;br /&gt;
    @BeforeAll&lt;br /&gt;
    static void setUpKlasse() throws Exception {&lt;br /&gt;
        // Code, der einmalig vor Ausführung des ersten Testcase ausgeführt wird&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @BeforeEach&lt;br /&gt;
    void setUp() throws Exception {&lt;br /&gt;
        // Code, der vor jedem Testcase ausgeführt wird&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    @Test&lt;br /&gt;
    void einTestcase() {&lt;br /&gt;
        // Code, der einen Testcase abbildet&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Test&lt;br /&gt;
    void weitererTestcase() {&lt;br /&gt;
        // Code, der einen weiteren Testcase abbildet&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @AfterEach&lt;br /&gt;
    void tearDown() throws Exception {&lt;br /&gt;
        // Code, der nach jedem Testcase ausgeführt wird&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    @AfterAll&lt;br /&gt;
    static void tearDownKlasse() throws Exception {&lt;br /&gt;
        // Code, der nach Ausführung des letzten Testcases ausgeführt wird&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JUnit-Erweiterungen ==&lt;br /&gt;
&lt;br /&gt;
Eine [[Implementierung]] von JUnit für [[Jakarta EE]] ist &amp;#039;&amp;#039;[[Cactus (Framework)|Cactus]]&amp;#039;&amp;#039; (ehemals &amp;#039;&amp;#039;J2EEUnit&amp;#039;&amp;#039;) aus dem [[Jakarta-Projekt]]. Seit Java EE 5 haben sich sogenannte [[Out-of-container]]-Frameworks (zum Beispiel [[EJB3Unit]]) etabliert, die eine Ausführung von Tests außerhalb des Containers erlauben.&lt;br /&gt;
&lt;br /&gt;
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 [[Integrierte Entwicklungsumgebung|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, englisch &amp;#039;&amp;#039;[[Code Coverage]]&amp;#039;&amp;#039;, der Tests).&lt;br /&gt;
&lt;br /&gt;
== Versionsgeschichte ==&lt;br /&gt;
; JUnit 5&lt;br /&gt;
: JUnit setzt sich nun aus mehreren verschiedenen Modulen aus drei verschiedenen Unterprojekten zusammen.&lt;br /&gt;
: JUnit 5 = &amp;#039;&amp;#039;JUnit Platform&amp;#039;&amp;#039; + &amp;#039;&amp;#039;JUnit Jupiter&amp;#039;&amp;#039; + &amp;#039;&amp;#039;JUnit Vintage&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;{{Internetquelle |autor=Stefan Bechtold, Sam Brannen, Johannes Link, Matthias Merdes, Marc Philipp, Juliette de Rancourt, Christian Stein |url=https://junit.org/junit5/docs/current/user-guide/ |titel=JUnit 5 User Guide |werk= |hrsg= |datum=2020-03-21 |abruf=2020-07-29 |sprache=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; JUnit 4.0&lt;br /&gt;
: In dieser Version wurde die Package-Struktur verändert. Alle Klassen finden sich nun in &amp;lt;code&amp;gt;org.junit.*&amp;lt;/code&amp;gt;. Die Klassen aus Version 3.x sind ebenfalls enthalten, sie sind weiterhin unter &amp;lt;code&amp;gt;junit.framework.*&amp;lt;/code&amp;gt; zu finden.&amp;lt;ref&amp;gt;Frank Westphal: [https://www.frankwestphal.de/JUnit4.0.html JUnit 4.0]&amp;lt;/ref&amp;gt;&lt;br /&gt;
; JUnit 4.5: Support für das  &amp;lt;code&amp;gt;assertThat&amp;lt;/code&amp;gt; assert statement mit Hilfe des Hamcrest frameworks.&amp;lt;ref&amp;gt;[https://junit.sourceforge.net/README.html JUnit release notes]&amp;lt;/ref&amp;gt;&lt;br /&gt;
; JUnit 4.8: Tests können nun mit Kategorien markiert werden. Dadurch ist es möglich, nur Tests einer bestimmten Kategorie auszuführen.&amp;lt;ref&amp;gt;[https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.8.md &amp;#039;&amp;#039;Release Notes&amp;#039;&amp;#039; zu JUnit 4.8]&amp;lt;/ref&amp;gt;&lt;br /&gt;
; JUnit 4.9: &amp;#039;&amp;#039;ClassRule Annotation&amp;#039;&amp;#039; zur Definition von Regeln für Unit-Test-Klassen.&amp;lt;ref&amp;gt;[https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.9.md JUnit 4.9 released]&amp;lt;/ref&amp;gt;&lt;br /&gt;
; JUnit 4.10: &amp;#039;&amp;#039;RuleChain&amp;#039;&amp;#039; zur Anordnung von Regeln, &amp;#039;&amp;#039;TemporaryFolder&amp;#039;&amp;#039; zur Anlage und Verwendung temporärer Dateien und Verzeichnisse.&amp;lt;ref&amp;gt;[https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.10.md JUnit 4.10 released]&amp;lt;/ref&amp;gt;&lt;br /&gt;
; JUnit 4.11: &amp;#039;&amp;#039;FixMethodOrder&amp;#039;&amp;#039; zur sortierten Ausführung der Testmethoden.&amp;lt;ref&amp;gt;[https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.11.md JUnit 4.11 is released]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[TestNG]] – Alternative zu JUnit&lt;br /&gt;
* [[Cactus (Framework)|Apache Cactus]], [[HTTPUnit]], [[DBUnit]] – bekannte Erweiterungen zu JUnit&lt;br /&gt;
* [[EasyMock]], [[Mockito]], [[PowerMock]] – JUnit-basierte [[Mocking]]-Frameworks&lt;br /&gt;
* [[Liste von Modultest-Software]]&lt;br /&gt;
* [[XUnit]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur |Autor=Johannes Link |Titel=Softwaretests mit JUnit – Techniken der testgetriebenen Entwicklung |Auflage=2., überarb. und erw. Aufl. |Verlag=dpunkt-Verlag |Ort=Heidelberg |Datum=2005 |ISBN=3-89864-325-5}}&lt;br /&gt;
* {{Literatur |Autor=Frank Westphal |Titel=Testgetriebene Entwicklung mit JUnit und FIT |Verlag=dpunkt |Datum=2005 |ISBN=3-89864-220-8 |Online=[https://www.frankwestphal.de/ftp/Westphal_Testgetriebene_Entwicklung.pdf frankwestphal.de] |Format=PDF |KBytes=2710}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://junit.org/ JUnit Homepage] (englisch)&lt;br /&gt;
* [https://www.frankwestphal.de/JUnit4.0.html JUnit-4.0-Neuerungen]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Junit}}&lt;br /&gt;
[[Kategorie:Freies Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Java-Bibliothek]]&lt;br /&gt;
[[Kategorie:Java-Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Testsoftware]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>