Das JUnit-Framework enthält zwei Assert
Klassen (natürlich in verschiedenen Paketen), und die Methoden für jede Klasse 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
.
junit.framework.*
das Dropdown-Menü für den statischen Import in ausschließenEditor->General->Auto Import->Exclude from Import and Completion
.Antworten:
Die alte Methode (von JUnit 3) bestand darin, die Testklassen durch Erweitern zu markieren
junit.framework.TestCase
. Das hat sichjunit.framework.Assert
selbst geerbt und Ihre Testklasse hat die Möglichkeit erhalten, die Assert-Methoden auf diese Weise aufzurufen.Seit Version 4 von JUnit wird das Framework
Annotations
zum Markieren von Tests verwendet. Sie müssen also nicht mehr verlängernTestCase
. Das bedeutet jedoch, dass die Assert-Methoden nicht verfügbar sind. Sie können die neueAssert
Klasse jedoch statisch importieren . Aus diesem Grund sind alle Assert-Methoden in der neuen Klasse statische Methoden. Sie können es also folgendermaßen importieren:Nach diesem statischen Import können Sie diese Methoden ohne Präfix verwenden.
Bei der Neugestaltung sind sie auch auf das neue Paket umgezogen, das
org.junit
den normalen Konventionen für die Paketbenennung besser entspricht.quelle
JUnit 3.X:
junit.framework.Assert
JUnit 4.X:
org.junit.Assert
Bevorzugen Sie die neueste Version, insbesondere wenn Sie JDK5 und höher mit Annotation-Unterstützung ausführen.
quelle
Es gibt tatsächlich eine Funktionsänderung:
org.junit.Assert
Beschwert sich, wenn Sie das Zwei-ArgumentassertEquals()
mitfloat
oder verwendendouble
, währendjunit.framework.Assert
es stillschweigend autobox wird.quelle
Ich glaube, sie werden von
junit.framework
bis umgestaltetorg.junit
undjunit.framework.Assert
aus Gründen der Abwärtskompatibilität beibehalten.quelle
Ich habe einen groben Quellcode-Vergleich durchgeführt und es gibt keine ernsthaften Änderungen. Es wurden viele Kommentare hinzugefügt
org.junit.Assert
und einige Umgestaltungen vorgenommen. Die einzige Änderung ist der Vergleich mitArrays
. Es gibt einige Code-Bereinigungen, aber es gibt (imho) keine funktionale Änderung .quelle
In Android Studio (und damit auch in IntelliJ) können Sie global ausschließen
junit.framework
Vorschläge für den automatischen Import .Sie können den Bereich zwischen
IDE
oder einstellenProject
. Wenn Sie keine Projekte haben, die JUnit 3 verwenden, können Sie sicher im IDE-Bereich bleiben.Einstellposition:
quelle