[JAVA] Genießen Sie JUnit 5 mit Eclipse vor der offiziellen Veröffentlichung

Überblick

Das Java-Testframework JUnit wird in diesem Jahr in der Hauptversion 5 veröffentlicht. Bei einer Konferenz namens Eclipse Converge 2017, die neulich in San Jose stattfand, fragte ich, wie ich diese JUnit 5 mit Eclipse, also meinem persönlichen PC für Windows 10, verwenden soll Ich habe es mit versucht.

JUnit 5 Dies ist die fünfte Hauptversion von JUnit. Es wurde überarbeitet, um die neuen Sprachspezifikationen für Java 8 und 9 zu unterstützen.

Neue Sprachspezifikationen, die JUnit 4 nicht abdecken konnte

Referenz

Für neue Funktionen und Vorsichtsmaßnahmen in JUnit 5 gibt es bereits viele Dokumente auf Japanisch. Bitte beziehen Sie sich auf diese.

Umgebung

JUnit 5 wird von Milestone 6 in Eclipse 4.7.0 (Oxygen) Beta-unterstützt. Sie können es von folgenden herunterladen.

https://eclipse.org/downloads/packages/release/Oxygen/M6

Ab dem 05. April 2017, als dieser Artikel geschrieben wurde, scheint es kein japanisches 4.7.x-Lokalisierungs-Plug-In zu geben.

http://mergedoc.osdn.jp/

Andere Umgebungen sind wie folgt.

OS Windows 10
Java SE 1.8.0_121
Eclipse 4.7.0-M6
git 2.12.2.windows.1

Einführung

Erstellen Sie aus dem Quellcode ein Eclipse-Plug-In für JUnit 5 und installieren Sie es auf Ihrer Eclipse (4.7-Serie).

Befolgen Sie die Schritte unter https://wiki.eclipse.org/JDT_UI/JUnit_5. Beachten Sie, dass Git zum Herunterladen der Datei erforderlich ist. Natürlich brauchst du auch Eclipse. Ich glaube nicht, dass es ein Problem mit Eclipse gibt, solange Sie die Java-Version herunterladen. Wenn Sie "for Testers" heruntergeladen haben, installieren Sie das Plug-in-Entwicklungstool separat. Das Plug-In ist in Eclipse integriert, sodass Sie weder Ant, Maven noch Gradle benötigen.

Vorbereiten des Arbeitsbereichs für die Plug-Entwicklung

Es ist nicht erforderlich, aber Sie möchten es nicht mit Ihrem regulären Entwicklungsarbeitsbereich mischen. Daher ist es eine gute Idee, einen zu haben.

Überprüfen Sie https://github.com/noopur2507/eclipse-junit5.git

Sie müssen keine Dateien erstellen. Laden Sie einfach https://github.com/noopur2507/eclipse-junit5/archive/master.zip herunter. In diesem Fall wird eine Datei mit dem Namen `` `eclipse-junit5-master.zip``` heruntergeladen. Bitte importieren und platzieren Sie den Inhalt dieser Zip-Datei wie folgt.

--Importiere org.eclipse.jdt.junit5.runtime in den Arbeitsbereich für die Plugin-Entwicklung --JUnit-5-JARs Gläser in Dropins stellen

JUnit-5-JARs-Gläser in Dropins

ju5_1.png

ju5_9.png

Klonen Sie git: //git.eclipse.org/gitroot/jdt/eclipse.jdt.ui.git

Bitte klone mit git. Es ist keine spezielle Tasteneinstellung erforderlich. Das Herunterladen dauert mehr als 10 Minuten.

$ git clone git://git.eclipse.org/gitroot/jdt/eclipse.jdt.ui.git
Cloning into 'eclipse.jdt.ui'...
remote: warning: ignoring extra bitmap file: objects/pack/pack-dffcdea022429c2393e25dfe14e4b833fb5d7dd0.pack
remote: Counting objects: 474929, done.
remote: Compressing objects: 100% (715/715), done.

remote: Compressing objects: 100% (715/715), done.
remote: Total 474929 (delta 364), reused 0 (delta 0)
Receiving objects: 100% (474929/474929), 73.43 MiB | 125.00 KiB/s, done.
Resolving deltas: 100% (249502/249502), done.
Checking out files: 100% (12727/12727), done.

Bitte bewegen Sie sich nach dem Klonen.

$ cd eclipse.jdt.ui

Wechseln Sie zum Zweig BETA_JUNIT5

eclipse.jdt.ui $ git checkout -b BETA_JUNIT5
Switched to a new branch 'BETA_JUNIT5'

Ziehen Sie BETA_JUNIT5 vom Ursprung

eclipse.jdt.ui $ git pull origin BETA_JUNIT5
From git://git.eclipse.org/gitroot/jdt/eclipse.jdt.ui
 * branch                  BETA_JUNIT5 -> FETCH_HEAD
Auto-merging org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/JunitPreferenceInitializer.java
Merge made by the 'recursive' strategy.
 org.eclipse.jdt.junit.core/plugin.properties       |   3 +-
 org.eclipse.jdt.junit.core/plugin.xml              |  13 +-
 .../jdt/internal/junit/JUnitCorePlugin.java        |   5 +-
 .../eclipse/jdt/internal/junit/JUnitMessages.java  |  10 +-
 .../jdt/internal/junit/JUnitMessages.properties    |   6 +-
 .../internal/junit/JUnitPreferencesConstants.java  |  38 ++-
 .../internal/junit/JunitPreferenceInitializer.java |  24 +-
 .../internal/junit/buildpath/BuildPathSupport.java |  90 ++++++-
 .../junit/buildpath/JUnitContainerInitializer.java |  59 ++++-
 .../internal/junit/launcher/JUnit5TestFinder.java  | 286 ++++++++++++++++++++
 .../JUnitLaunchConfigurationConstants.java         |   5 +-
 .../internal/junit/launcher/TestKindRegistry.java  |  12 +-
 .../internal/junit/model/ITestRunListener2.java    |  16 +-
 .../eclipse/jdt/internal/junit/model/IXMLTags.java |  16 +-
 .../junit/model/RemoteTestRunnerClient.java        |   2 +-
 .../jdt/internal/junit/model/TestCaseElement.java  |  12 +-
 .../jdt/internal/junit/model/TestElement.java      |  55 +++-
 .../eclipse/jdt/internal/junit/model/TestRoot.java |   4 +-
 .../jdt/internal/junit/model/TestRunHandler.java   |  14 +-
 .../jdt/internal/junit/model/TestRunSession.java   | 107 ++++++--
 .../junit/model/TestRunSessionSerializer.java      |  28 +-
 .../jdt/internal/junit/model/TestSuiteElement.java |  12 +-
 .../internal/junit/util/CoreTestSearchEngine.java  |  60 ++++-
 .../src/org/eclipse/jdt/junit/JUnitCore.java       |  10 +-
 .../launcher/JUnitLaunchConfigurationDelegate.java | 107 ++++++--
 org.eclipse.jdt.junit.runtime/META-INF/MANIFEST.MF |   8 +-
 .../junit/runner/FirstRunExecutionListener.java    |   4 +-
 .../jdt/internal/junit/runner/ITestIdentifier.java |   5 +-
 .../jdt/internal/junit/runner/ITestLoader.java     |   5 +-
 .../internal/junit/runner/IVisitsTestTrees.java    |   4 +-
 .../jdt/internal/junit/runner/MessageIds.java      |  24 +-
 .../internal/junit/runner/RemoteTestRunner.java    |  81 ++++--
 .../jdt/internal/junit/runner/TestIdMap.java       |   2 +-
 .../junit/runner/TestReferenceFailure.java         |   7 +-
 .../junit/runner/junit3/JUnit3Identifier.java      |  10 +-
 .../junit/runner/junit3/JUnit3TestLoader.java      |   4 +-
 .../junit/runner/junit3/JUnit3TestReference.java   |  22 +-
 org.eclipse.jdt.junit/plugin.xml                   |  11 +-
 .../junit/buildpath/JUnitContainerWizardPage.java  |  19 +-
 .../junit/ui/JUnitClasspathFixProcessor.java       |  38 ++-
 .../jdt/internal/junit/ui/JUnitMessages.java       |  12 +-
 .../jdt/internal/junit/ui/JUnitMessages.properties |  10 +-
 .../eclipse/jdt/internal/junit/ui/JUnitPlugin.java |  53 +++-
 .../internal/junit/ui/JUnitQuickFixProcessor.java  |  47 +++-
 .../junit/ui/JUnitUIPreferencesConstants.java      |  18 +-
 .../jdt/internal/junit/ui/OpenTestAction.java      |  30 ++-
 .../jdt/internal/junit/ui/TestRunnerViewPart.java  |  21 +-
 .../junit/ui/TestSessionLabelProvider.java         |  45 ++--
 .../eclipse/jdt/internal/junit/ui/TestViewer.java  | 152 ++++++++---
 .../jdt/internal/junit/util/JUnitStubUtility.java  |   8 +
 .../junit/wizards/NewTestCaseCreationWizard.java   |  69 +++--
 .../junit/wizards/SuiteClassesContentProvider.java |   4 +-
 .../jdt/internal/junit/wizards/WizardMessages.java |   7 +-
 .../junit/wizards/WizardMessages.properties        |   9 +-
 .../launcher/JUnitLaunchConfigurationTab.java      |  27 +-
 .../jdt/junit/launcher/JUnitLaunchShortcut.java    |  48 ++--
 .../junit/wizards/NewTestCaseWizardPageOne.java    | 290 ++++++++++++++++-----
 .../jdt/junit/wizards/NewTestSuiteWizardPage.java  |   4 +-
 .../internal/junit4/runner/JUnit4Identifier.java   |  10 +-
 .../internal/junit4/runner/JUnit4TestLoader.java   |   3 +-
 .../junit4/runner/JUnit4TestReference.java         |   6 +-
 .../corext/codemanipulation/StubUtility.java       |   2 +-
 .../templates/default-templates.properties         |   4 +-
 org.eclipse.jdt.ui/templates/default-templates.xml |  15 +-
 64 files changed, 1728 insertions(+), 404 deletions(-)
 create mode 100644 org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnit5TestFinder.java

Dieser Code muss auch nicht mit einem Build-Tool wie Maven erstellt werden. Importieren Sie aus den aktualisierten Ordnern die folgenden 5 in den Arbeitsbereich für die Plugin-Entwicklung.

  1. org.eclipse.jdt.ui
  2. org.eclipse.jdt.junit
  3. org.eclipse.jdt.junit.core
  4. org.eclipse.jdt.junit.runtime
  5. org.eclipse.jdt.junit4.runtime

ju5_4.png ju5_5.png ju5_6.png ju5_8.png ju5_7.png

Plugins exportieren und installieren

Wählen Sie "Bereitstellbare Plug-Ins und Fragmente" aus "Datei" -> "Exportieren" -> "Plug-In-Entwicklung" aus der Eclipse-Menüleiste. Wenn Sie nicht über das Plug-in-Entwicklungstool verfügen, haben Sie natürlich keine Wahl. Seien Sie vorsichtig, wenn Sie die Test Developer-Version haben.

ju5_10.png

ju5_11.png

Wenn das Kontrollkästchen "In Host installieren. Repository:" unter "Ziel" aktiviert ist, wird die Plug-In-Installation fortgesetzt, sobald der Plug-In-Export abgeschlossen ist. Nach Abschluss der Installation werden Sie von Eclipse aufgefordert, die Datei neu zu starten. Starten Sie sie daher neu.

Wenn Sie unter Windows Eclipse auf Ihrem C-Laufwerk haben und der Launcher verschwindet, laden Sie Eclipse erneut herunter und kopieren Sie nur die exe-Datei in den Eclipse-Ordner.

Bestätigung

Erstellen Sie ein neues Java-Projekt, öffnen Sie die Einstellungen für den Erstellungspfad und wählen Sie JUnit in Add Library. Wenn das Plug-In erfolgreich exportiert und installiert wurde, sollte JUnit 5 zu den hier angezeigten Dialogfeldern hinzugefügt worden sein.

ju5_12.png

Sie können jetzt JUnit 5 auf Eclipse entwickeln.


Viel Spaß mit JUnit 5

Schreiben wir nun den JUnit 5-Code und führen ihn aus. Dieses Mal werde ich den Code schreiben, um die neue Funktionsgruppen-Zusicherung von JUnit 5 zu testen.

JUnit_5_Example


import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class BaseTest {

	@Test
	public void test() {
		Assertions.assertEquals(Integer.valueOf(1).toString(), "1");
		Assertions.assertAll(
				() -> Assertions.assertEquals(Integer.valueOf(1).toString(), "1"),
				() -> Assertions.assertEquals(Integer.valueOf(1).toString(), "2"),
				() -> Assertions.assertEquals(Integer.valueOf(3).toString(), "3"),
				() -> System.out.println("Hello JUnit5!")
				);
	}
}

Es funktioniert genauso wie bis zu JUnit 4.

ju5_13.png

Ja, der Test schlägt fehl, da die zweite Bestätigung fehlschlägt. Was Sie hier beachten sollten, ist, dass "Hello JUnit 5!" An die Konsole ausgegeben wird. Wenn in herkömmlicher JUnit eine Zusicherung innerhalb einer einzelnen Testmethode fehlschlägt, wird keine weitere Verarbeitung durchgeführt. In der JUnit 5-Gruppenzusicherung wird die Verarbeitung innerhalb dieser Gruppe immer ausgeführt.

Sie haben jetzt bestätigt, dass das diesmal exportierte JUnit 5-Plug-In ordnungsgemäß funktioniert. Bisher hat es ungefähr 3 Stunden gedauert.


Zusammenfassung

Es ist immer noch ein ziemlicher Aufwand. Wenn Sie also JUnit 5 für geschäftliche Zwecke in Ihr Projekt integrieren möchten, warten Sie, bis Eclipse JUnit 5 offiziell unterstützt, oder verwenden Sie IntelliJ, es sei denn, Sie haben einen guten Grund dafür ...

Alternativ ist es am besten, es über das Gradle- oder Maven-Plug-In zu verwenden.


Referenz

JUnit 5 User Guide http://junit.org/junit5/docs/current/user-guide/

Eclipse Converge 2017-Sitzung "JUnit 5 mit Eclipse umarmen"

JUnit 5-Beispielprojekt in Gradle

https://github.com/junit-team/junit5-samples/tree/r5.0.0-M4/junit5-gradle-consumer

JUnit 5 Beispielprojekt in Maven

https://github.com/junit-team/junit5-samples/tree/r5.0.0-M4/junit5-maven-consumer

Recommended Posts

Genießen Sie JUnit 5 mit Eclipse vor der offiziellen Veröffentlichung
So führen Sie JUnit in Eclipse aus
[Für Anfänger] Ich habe versucht, JUnit 5 mit Eclipse zu verwenden
MVC in Eclipse.
Refactoring in JUnit
JUnit 5 wird in Eclipse zu java.lang.NoClassDefFoundError: org / junit / platform / engine / EngineDiscoveryListener
Debuggen mit Eclipse