it-swarm.com.de

Unterschiede zwischen 2 JUnit-Assert-Klassen

Das JUnit-Framework enthält 2 Klassen Assert (natürlich in verschiedenen Paketen), und die Methoden scheinen sehr ähnlich zu sein. Kann jemand erklären, warum das so ist?

Die Klassen, auf die ich mich beziehe, sind: junit.framework.Assert und org.junit.Assert .

252
Dónal

Die alte Methode (von JUnit 3) bestand darin, die Testklassen zu markieren, indem junit.framework.TestCase. Das geerbte junit.framework.Assert selbst und Ihre Testklasse haben die Möglichkeit erhalten, die assert-Methoden auf diese Weise aufzurufen.

Seit Version 4 von JUnit verwendet das Framework Annotations zum Markieren von Tests. Sie müssen also TestCase nicht mehr erweitern. Dies bedeutet jedoch, dass die Assert-Methoden nicht verfügbar sind. Sie können die neue Klasse Assert jedoch statisch importieren. Aus diesem Grund sind alle Assert-Methoden in der neuen Klasse statische Methoden. So können Sie es importieren:

import static org.junit.Assert.*;

Nach diesem statischen Import können Sie diese Methoden ohne Präfix verwenden.

Bei der Neugestaltung zogen sie auch auf das neue Paket org.junit folgt besser den normalen Konventionen für die Paketbenennung.

235
Mnementh

JUnit 3.X: junit.framework.Assert

JUnit 4.X: org.junit.Assert

Bevorzugen Sie die neueste Version, insbesondere wenn Sie JDK5 oder höher mit Unterstützung für Anmerkungen ausführen.

74
ReneS

Tatsächlich gibt es eine funktionale Änderung: org.junit.Assert Wird sich beschweren, wenn Sie das aus zwei Argumenten bestehende assertEquals() mit float oder double verwenden, während junit.framework.Assert wird es stillschweigend autoboxen.

19
David Moles

Ich glaube, dass sie von junit.framework Auf org.junit Umgestalten und junit.framework.Assert Aus Gründen der Abwärtskompatibilität beibehalten werden.

5
sblundy

Ich habe einen groben Quellcode-Vergleich durchgeführt und es gibt keine gravierenden Änderungen. In org.junit.Assert Wurden viele Kommentare hinzugefügt und einige Refactorings wurden durchgeführt. Die einzige Änderung ist der Vergleich mit Arrays. Es gibt einige Code-Bereinigungen, aber es gibt (imho) keine funktionale Änderung.

3
guerda

In Android Studio (und damit auch in IntelliJ)) können Sie junit.framework Global vom Vorschlag für den automatischen Import ausschließen.

Sie können den Bereich zwischen IDE und Project einstellen. Wenn Sie keine Projekte haben, die JUnit 3 verwenden, können Sie sicher im Bereich IDE bleiben.

Einstellposition:

Einstellungen -> Editor -> Allgemein -> Automatischer Import

enter image description here

0
MatPag