Présentation du test Java automatisé avec JUnit 5 + Gradle

Aperçu

Qu'est-ce que Junit 5

--JUnit est un framework de test automatisé Java

Cet environnement

Échantillon de base de JUnit 5 + Gradle

Liste des codes sources

├── build.gradle
├── settings.gradle
└── src
    ├── main
    │   └── java
    │       └── myapp
    │           └── Calc.java
    └── test
        └── java
            └── myapp
                └── CalcTest.java

build.gradle

build.gradle


plugins {
  id 'java'
}

repositories {
  jcenter()
}

dependencies {
  // Junit Jupiter 5.5.Introduit 2
  //Les éléments suivants sont présentés comme dépendances
  // junit-jupiter-api:5.5.2
  // junit-jupiter-engine:5.5.2
  // junit-jupiter-platform-engine:1.5.2
  testImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
}

test {
  //Paramètres pour utiliser la plateforme JUnit
  useJUnitPlatform()

  testLogging {
    //Afficher la sortie standard et la sortie d'erreur standard pendant le test
    showStandardStreams true
    //Événement de sortie(TestLogEvent)
    events 'started', 'skipped', 'passed', 'failed'
    //Paramètres de sortie lorsqu'une exception se produit(TestExceptionFormat)
    exceptionFormat 'full'
  }
}

référence:

settings.gradle

settings.gradle


rootProject.name = 'myapp'

Calc.java

package myapp;

public class Calc {

  private int base;

  //Définir une valeur de référence
  public Calc(int base) {
    this.base = base;
  }

  //Ajouter
  public int plus(int num) {
    return base + num;
  }

  //Tirer
  public int minus(int num) {
    return base - num;
  }
}

CalcTest.java

package myapp;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

class CalcTest {

  //Exécuter une seule fois avant le début du test
  @BeforeAll
  static void beforeAll() {
    System.out.println("Démarrer CalcTest");
  }

  //Exécuter une seule fois après le début du test
  @AfterAll
  static void afterAll() {
    System.out.println("CalcTest terminé");
  }

  //Exécuté une seule fois avant de démarrer chaque méthode de test
  @BeforeEach
  void beforeEach() {
    System.out.println("Démarrer une méthode de test pour CalcTest");
  }

  //Exécuté une seule fois après le début de chaque méthode de test
  @AfterEach
  void afterEach() {
    System.out.println("Terminer une méthode de test de CalcTest");
  }

  //Les méthodes de test ne doivent pas être privées ou statiques
  //La valeur de retour doit être void car la valeur ne peut pas être retournée.
  @Test
  void testPlus() {
    System.out.println("Exécutez testPlus: 2 + 3 = 5");
    Calc calc = new Calc(2);
    //1er argument:résultat attendu attendu
    //2ème argument:résultat réel de l'exécution
    //3e argument:message Message de sortie en cas d'échec
    assertEquals(5, calc.plus(3), "2 + 3 =Vérification de 5");
  }

  @Test
  void testMinus() {
    System.out.println("Exécuter testMinus: 5 - 2 = 3");
    Calc calc = new Calc(5);
    assertEquals(3, calc.minus(2), "5 - 2 =Vérification de 3");
  }
}

référence:

Exemple de test réussi

$ gradle test

> Task :test

myapp.CalcTest STANDARD_OUT
Démarrer CalcTest

myapp.CalcTest > testMinus() STARTED

myapp.CalcTest > testMinus() STANDARD_OUT
Démarrer une méthode de test pour CalcTest
Exécuter testMinus: 5 - 2 = 3
Terminer une méthode de test de CalcTest

myapp.CalcTest > testMinus() PASSED

myapp.CalcTest > testPlus() STARTED

myapp.CalcTest > testPlus() STANDARD_OUT
Démarrer une méthode de test pour CalcTest
Exécutez testPlus: 2 + 3 = 5
Terminer une méthode de test de CalcTest

myapp.CalcTest > testPlus() PASSED

myapp.CalcTest STANDARD_OUT
CalcTest terminé

BUILD SUCCESSFUL in 1s
3 actionable tasks: 3 executed

Exemple d'échec de test

$ gradle test

> Task :test FAILED

myapp.CalcTest STANDARD_OUT
Démarrer CalcTest

myapp.CalcTest > testMinus() STARTED

myapp.CalcTest > testMinus() STANDARD_OUT
Démarrer une méthode de test pour CalcTest
Exécuter testMinus: 5 - 2 = 3
Terminer une méthode de test de CalcTest

myapp.CalcTest > testMinus() FAILED
    org.opentest4j.AssertionFailedError: 5 - 2 =Vérification de 3==> expected: <3> but was: <7>
        at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)
        at org.junit.jupiter.api.AssertionUtils.failNotEqual(AssertionUtils.java:62)
        at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
        at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:542)
        at myapp.CalcTest.testMinus(CalcTest.java:48)

Échantillon à tester collectivement avec assertAll

Exemple de code

package myapp;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;

class CalcTest {

  @Test
  void testPlus() {
    Calc calc = new Calc(10);
    //Vérifier collectivement
    //Même s'il échoue au milieu, vérifiez tout sans vous arrêter
    assertAll(
     () -> assertEquals(30, calc.plus(20)),
     () -> assertEquals(99, calc.plus(90)),
     () -> assertEquals(11, calc.plus(50)),
     () -> assertEquals(40, calc.plus(30))
    );
  }
}

référence:

Exemple d'échec de test

$ gradle test

> Task :test FAILED

myapp.CalcTest > testPlus() STARTED

myapp.CalcTest > testPlus() FAILED
    org.opentest4j.MultipleFailuresError: Multiple Failures (2 failures)
        org.opentest4j.AssertionFailedError: expected: <99> but was: <100>
        org.opentest4j.AssertionFailedError: expected: <11> but was: <60>
        at org.junit.jupiter.api.AssertAll.assertAll(AssertAll.java:80)
        at org.junit.jupiter.api.AssertAll.assertAll(AssertAll.java:44)
        at org.junit.jupiter.api.AssertAll.assertAll(AssertAll.java:38)
        at org.junit.jupiter.api.Assertions.assertAll(Assertions.java:2839)
        at myapp.CalcTest.testPlus(CalcTest.java:15)

1 test completed, 1 failed

FAILURE: Build failed with an exception.

Échantillon de test d'occurrence d'exception

package myapp;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;

class CalcTest {

  @Test
  void testPlus() {
    Calc calc = new Calc(100);
    //En supposant qu'une ArithmeticException se produira si elle est divisée par 0
    ArithmeticException e =
      assertThrows(ArithmeticException.class,
        () -> calc.divide(0));
    assertTrue(e instanceof ArithmeticException);
  }
}

Matériel de référence

Recommended Posts

Présentation du test Java automatisé avec JUnit 5 + Gradle
Présentation des tests Java automatisés avec JUnit 5 + Apache Maven
[Java] Tester des méthodes privées avec JUnit
Le test JUnit 5 Gradle génère une erreur avec l'annotation Lombok
Test d'intégration avec Gradle
Faites un test unitaire avec Junit.
[Java] Comment tester s'il est nul dans JUnit
[CircleCI 2.0] [Java] [Maven] [JUnit] Agréger les résultats des tests JUnit avec CircleCI 2.0
Créez et testez des applications Java + Gradle avec Wercker
Créer un multi-projet Java avec Gradle
[Java] Exemple de cas de test JUnit 4
Tester l'API Web avec junit
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
Construire un projet Java avec Gradle
Couverture de test de sortie avec Clover + Gradle
Contrôleur de cadre de test Spring avec Junit
[Java] Créer un module exécutable avec Gradle
Comment filtrer JUnit Test dans Gradle
Contrôler l'ordre de test dans Junit4 avec un type d'énumération
Application Java CICS-Run - (3) Gestion de build avec Gradle
Comment tester l'étendue privée avec JUnit
Jugement des nombres premiers Java
Rendre l'environnement SpringBoot1.5 + Gradle4.4 + Java8 + Docker compatible avec Java11
Analyse de code statique par Checkstyle avec Java + Gradle
Comment tester les interruptions pendant Thread.sleep avec JUnit
Test JUnit facile de la version Elasticsearch 2018 avec Embedded-elasticsearch
Créer un environnement de test E2E avec Selenium (Java)
En utilisant Gradle avec VSCode, compilez Java → exécutez
[Java] Hello World avec Java 14 x Spring Boot 2.3 x JUnit 5 ~
Tester le code à l'aide d'une maquette avec JUnit (centre EasyMock)
Mélanger les cas de test avec JUnit 5 et les méthodes par défaut
Mise en œuvre de la fonction de pagénation
Implémentation de XLPagerTabStrip avec TabBarController
[Rails] Rendre la pagination compatible avec Ajax
Créer une fonction de pagination avec Rails Kaminari
[Swift 5] Implémentation de l'enregistrement des membres dans Firebase
Présentation du test Java automatisé avec JUnit 5 + Gradle
Exécutez Maven sur Java 8 lors de la compilation sur Java 6 et des tests sur Java 11
Tester le contenu d'un fichier Excel avec JUnit
[Compatible JUnit 5] Ecrire un test en utilisant JUnit 5 avec Spring boot 2.2, 2.3
[JUnit 5] Ecrivez un test de validation avec Spring Boot! [Test de paramétrage]
Vérifiez la couverture avec Codecov dans la configuration Java + Gradle + Wercker
J'ai écrit un test avec Spring Boot + JUnit 5 maintenant
Installez java avec Homebrew
Utiliser ProGuard avec Gradle
Lancement du test JUnit essayez quelque chose
Vérifier l'implémentation de Java toString ()
Changer de siège avec Java
Installez Java avec Ansible
Téléchargement confortable avec JAVA
Mémo simple de JUnit de java
Construction de premier niveau (Java)
Installez Gradle sur ubuntu16.04
Échantillon de bibliothèque de tests unitaires Java
Changer java avec direnv
Data Nucleus commençant par Gradle
Implémentation du tri de tas (en java)
[Rails] Test avec RSpec
Testez Nokogiri avec Rspec.
Téléchargement Java avec Ansible
Tester automatiquement avec la jauge
Test de charge avec JMeter
Raclons avec Java! !!
Utiliser les WebJars avec Gradle
Construire Java avec Wercker