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 .

War es hilfreich?

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

Bevorzugen

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top