Le framework de test Java JUnit sera publié dans la version majeure 5 cette année. Lors d'une conférence appelée Eclipse Converge 2017 tenue à San Jose l'autre jour, j'ai demandé comment utiliser cette JUnit 5 avec Eclipse, donc mon PC personnel pour Windows 10 Je l'ai essayé avec.
JUnit 5 Il s'agit de la cinquième version majeure de JUnit. Il a été retravaillé pour prendre en charge les nouvelles spécifications de langage pour Java 8 et 9.
Pour les nouvelles fonctionnalités et précautions dans JUnit 5, il existe déjà de nombreux documents en japonais, veuillez donc vous y référer.
JUnit 5 sera pris en charge en version bêta à partir de Milestone 6 dans Eclipse 4.7.0 (Oxygen). Vous pouvez le télécharger à partir de ce qui suit.
https://eclipse.org/downloads/packages/release/Oxygen/M6
Depuis le 5 avril 2017, au moment de la rédaction de cet article, il ne semble pas y avoir de plug-in de localisation japonais 4.7.x.
http://mergedoc.osdn.jp/
Les autres environnements sont les suivants.
OS | Windows 10 |
---|---|
Java SE | 1.8.0_121 |
Eclipse | 4.7.0-M6 |
git | 2.12.2.windows.1 |
Créez un plug-in Eclipse pour JUnit 5 à partir du code source et installez-le sur votre Eclipse (série 4.7).
Suivez les étapes sur https://wiki.eclipse.org/JDT_UI/JUnit_5. Notez que git est requis pour télécharger le fichier. Bien sûr, vous avez également besoin d'Eclipse. Je ne pense pas qu'il y ait de problème avec Eclipse tant que vous téléchargez la version Java. Si vous avez téléchargé "pour les testeurs", veuillez installer l'outil de développement de plug-ins séparément. Le plug-in est intégré à Eclipse, vous n'avez donc pas besoin d'Ant, Maven ou Gradle.
Ce n'est pas obligatoire, mais bon, vous ne voulez pas le mélanger avec votre espace de travail de développement habituel, c'est donc une bonne idée d'en avoir un.
Vous n'avez pas besoin de créer de fichiers, alors téléchargez simplement https://github.com/noopur2507/eclipse-junit5/archive/master.zip. Dans ce cas, un fichier appelé eclipse-junit5-master.zip
sera téléchargé. Veuillez importer et placer le contenu de ce fichier zip comme suit.
--Importer org.eclipse.jdt.junit5.runtime dans l'espace de travail de développement du plugin
Veuillez cloner en utilisant git. Aucun réglage de clé spécial n'est requis. Il faut plus de 10 minutes pour tous les télécharger.
$ 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.
Veuillez vous déplacer après le clonage.
$ cd eclipse.jdt.ui
eclipse.jdt.ui $ git checkout -b BETA_JUNIT5
Switched to a new branch 'BETA_JUNIT5'
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
Ce code n'a pas non plus besoin d'être généré avec un outil de génération tel que Maven. À partir des dossiers mis à jour, importez les 5 suivants dans l'espace de travail de développement du plugin.
Sélectionnez "Plug-ins et fragments déployables" dans "Fichier" -> "Exporter" -> "Développement de plug-ins" dans la barre de menu Eclipse. Bien sûr, si vous ne disposez pas de l'outil de développement de plug-ins, vous n'aurez pas le choix. Soyez prudent si vous disposez de la version Test Developer.
Si la case à cocher "Installer sur l'hôte. Référentiel:" sous "Destination" est cochée, l'installation du plug-in se poursuivra dès que l'exportation du plug-in sera terminée. Une fois l'installation terminée, Eclipse vous demandera de le redémarrer, alors redémarrons-le.
Sous Windows, si vous avez Eclipse sur votre lecteur C et que le lanceur disparaît, téléchargez à nouveau Eclipse et copiez uniquement le fichier exe dans le dossier eclipse.
Créez un nouveau projet Java, ouvrez les paramètres du chemin de construction et sélectionnez JUnit dans Ajouter une bibliothèque. Si le plug-in a été correctement exporté et installé, JUnit 5 doit avoir été ajouté aux choix de boîte de dialogue qui apparaissent ici.
Vous êtes maintenant prêt à développer JUnit 5 sur Eclipse.
Maintenant, écrivons le code JUnit 5 et exécutons-le. Cette fois, j'écrirai le code pour essayer la nouvelle assertion de groupe de fonctions de JUnit 5.
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!")
);
}
}
Cela fonctionne de la même manière que jusqu'à JUnit 4.
Oui, le test échoue car la deuxième assertion échoue. Ce à quoi vous devez faire attention ici, c'est que "Hello JUnit 5!" Est sorti sur la console. Dans JUnit traditionnel, si une assertion échoue dans une seule méthode de test, aucun autre traitement n'est effectué. Dans l'assertion de groupe JUnit 5, le traitement au sein de ce groupe est toujours exécuté.
Vous avez maintenant confirmé que le plug-in JUnit 5 que vous avez exporté cette fois fonctionne correctement. Cela a pris environ 3 heures jusqu'à présent.
C'est encore assez compliqué, donc si vous voulez intégrer JUnit 5 dans votre projet pour les entreprises, attendez qu'Eclipse prenne officiellement en charge JUnit 5 ou utilisez IntelliJ, à moins que vous n'ayez une bonne raison de le faire ...
Il est également préférable de l'utiliser via le plug-in Gradle ou Maven.
JUnit 5 User Guide http://junit.org/junit5/docs/current/user-guide/
https://github.com/junit-team/junit5-samples/tree/r5.0.0-M4/junit5-gradle-consumer
https://github.com/junit-team/junit5-samples/tree/r5.0.0-M4/junit5-maven-consumer
Recommended Posts