Unterschiede zwischen 2 JUnit Assert-Klassen
-
08-07-2019 - |
Frage
Der JUnit Framework enthält 2 Assert
Klassen (in verschiedenen Paketen, natürlich) und die Methoden auf jedem scheinen sehr ähnlich zu sein. Kann jemand erklären, warum das so ist?
Die Klassen Ich beziehe mich auf, sind: junit.framework.Assert
und org.junit.Assert
.
Lösung
Die alte Methode (von JUnit 3) war die Testklassen durch die Erweiterung junit.framework.TestCase
zu markieren. Das geerbt junit.framework.Assert
selbst und Ihre Testklasse gewann die Fähigkeit, die assert Methoden auf diese Weise zu nennen.
Seit der Version 4 von JUnit, verwendet der Rahmen Annotations
für Tests Kennzeichnung. Sie müssen also nicht mehr TestCase
verlängern. Das bedeutet aber, sind die assert Methoden nicht zur Verfügung. Aber Sie können einen statischen Import der neuen Assert
Klasse. Deshalb alle assert Methoden in der neuen Klasse sind statische Methoden. So können Sie es auf diese Weise importieren:
import static org.junit.Assert.*;
Nach diesem statischen Import, können Sie diese Methoden ohne Präfix verwenden können.
Bei der Neugestaltung sie auch auf das neue Paket org.junit
bewegt, die besser die normalen Konventionen für Paket Namensgebung folgt.
Andere Tipps
JUnit 3.X: junit.framework.Assert
JUnit 4.X: org.junit.Assert
Die neueste, besonders beim Laufen JDK5 und höher mit Annotations Unterstützung.
Es gibt in der Tat eine funktionelle Änderung: org.junit.Assert
wird sich beschweren, wenn Sie die zweiargumentigen assertEquals()
mit float
oder double
verwenden, während junit.framework.Assert
still es AutoBox wird
Ich glaube, sie von junit.framework
sind Refactoring zu org.junit
und junit.framework.Assert
wird aus Gründen der Abwärtskompatibilität beibehalten.
Ich habe eine grobe Quellcode vergleichen und es gibt keine gravierenden Veränderungen. Viele Kommentare wurden in org.junit.Assert
und einige Refactorings sind fertig aufgenommen. Die einzige Änderung ist der Vergleich mit Arrays
. Es gibt einige Code Cleanup, aber es gibt (imho) keine Funktionsänderung .
In Android Studio (und so in IntelliJ auch), können Sie global ausschließen junit.framework
von Auto-Import-Vorschlag.
Sie können den Umfang zwischen IDE
oder Project
gesetzt. Wenn Sie Projekte nicht die JUnit verwenden 3 Sie sicher mit IDE Rahmen bleiben.
Einstellung Position:
Einstellungen -> Editor -> Allgemein -> Auto Import