Einführung eines automatisierten Java-Tests mit JUnit 5 + Gradle

Überblick

--Schreiben Sie ein grundlegendes Beispiel für automatisierte Java-Tests mit JUnit 5 + Gradle

Was ist Junit 5?

--JUnit ist ein Java-Framework für automatisierte Tests

Diese Umgebung

Grundmuster von JUnit 5 + Gradle

Quellcodeliste

├── 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.Eingeführt 2
  //Das Folgende wird als Abhängigkeit eingeführt
  // 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 {
  //Einstellungen zur Verwendung der JUnit-Plattform
  useJUnitPlatform()

  testLogging {
    //Anzeige der Standardausgabe und der Standardfehlerausgabe während des Tests
    showStandardStreams true
    //Ausgabeereignis(TestLogEvent)
    events 'started', 'skipped', 'passed', 'failed'
    //Ausgabeeinstellungen, wenn eine Ausnahme auftritt(TestExceptionFormat)
    exceptionFormat 'full'
  }
}

Referenz:

settings.gradle

settings.gradle


rootProject.name = 'myapp'

Calc.java

package myapp;

public class Calc {

  private int base;

  //Stellen Sie einen Referenzwert ein
  public Calc(int base) {
    this.base = base;
  }

  //Hinzufügen
  public int plus(int num) {
    return base + num;
  }

  //ziehen
  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 {

  //Nur einmal ausführen, bevor der Test beginnt
  @BeforeAll
  static void beforeAll() {
    System.out.println("Starten Sie CalcTest");
  }

  //Nach Teststart nur einmal ausführen
  @AfterAll
  static void afterAll() {
    System.out.println("CalcTest beendet");
  }

  //Wird nur einmal ausgeführt, bevor jede Testmethode gestartet wird
  @BeforeEach
  void beforeEach() {
    System.out.println("Starten Sie eine Testmethode für CalcTest");
  }

  //Wird nach jedem Teststart nur einmal ausgeführt
  @AfterEach
  void afterEach() {
    System.out.println("Beenden Sie eine Testmethode von CalcTest");
  }

  //Testmethoden sollten nicht privat oder statisch sein
  //Der Rückgabewert sollte ungültig sein, da der Wert nicht zurückgegeben werden kann.
  @Test
  void testPlus() {
    System.out.println("Führen Sie testPlus aus: 2 + 3 = 5");
    Calc calc = new Calc(2);
    //1. Argument:erwartetes erwartetes Ergebnis
    //2. Argument:tatsächliches Ausführungsergebnis
    //3. Argument:message Ausgabe der Nachricht bei einem Fehler
    assertEquals(5, calc.plus(3), "2 + 3 =Überprüfung von 5");
  }

  @Test
  void testMinus() {
    System.out.println("Führen Sie testMinus aus: 5 - 2 = 3");
    Calc calc = new Calc(5);
    assertEquals(3, calc.minus(2), "5 - 2 =Überprüfung von 3");
  }
}

Referenz:

Beispiel für einen erfolgreichen Test

$ gradle test

> Task :test

myapp.CalcTest STANDARD_OUT
Starten Sie CalcTest

myapp.CalcTest > testMinus() STARTED

myapp.CalcTest > testMinus() STANDARD_OUT
Starten Sie eine Testmethode für CalcTest
Führen Sie testMinus aus: 5 - 2 = 3
Beenden Sie eine Testmethode von CalcTest

myapp.CalcTest > testMinus() PASSED

myapp.CalcTest > testPlus() STARTED

myapp.CalcTest > testPlus() STANDARD_OUT
Starten Sie eine Testmethode für CalcTest
Führen Sie testPlus aus: 2 + 3 = 5
Beenden Sie eine Testmethode von CalcTest

myapp.CalcTest > testPlus() PASSED

myapp.CalcTest STANDARD_OUT
CalcTest beendet

BUILD SUCCESSFUL in 1s
3 actionable tasks: 3 executed

Beispiel für einen Testfehler

$ gradle test

> Task :test FAILED

myapp.CalcTest STANDARD_OUT
Starten Sie CalcTest

myapp.CalcTest > testMinus() STARTED

myapp.CalcTest > testMinus() STANDARD_OUT
Starten Sie eine Testmethode für CalcTest
Führen Sie testMinus aus: 5 - 2 = 3
Beenden Sie eine Testmethode von CalcTest

myapp.CalcTest > testMinus() FAILED
    org.opentest4j.AssertionFailedError: 5 - 2 =Überprüfung von 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)

Probe zum gemeinsamen Testen mit assertAll

Beispielcode

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);
    //Gemeinsam überprüfen
    //Auch wenn es in der Mitte fehlschlägt, überprüfen Sie alles, ohne anzuhalten
    assertAll(
     () -> assertEquals(30, calc.plus(20)),
     () -> assertEquals(99, calc.plus(90)),
     () -> assertEquals(11, calc.plus(50)),
     () -> assertEquals(40, calc.plus(30))
    );
  }
}

Referenz:

Beispiel für einen Testfehler

$ 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.

Testmuster für das Auftreten von Ausnahmen

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);
    //Angenommen, eine ArithmeticException tritt auf, wenn sie durch 0 geteilt wird
    ArithmeticException e =
      assertThrows(ArithmeticException.class,
        () -> calc.divide(0));
    assertTrue(e instanceof ArithmeticException);
  }
}

Referenzmaterial

Recommended Posts

Einführung eines automatisierten Java-Tests mit JUnit 5 + Gradle
Einführung automatisierter Java-Tests mit JUnit 5 + Apache Maven
[Java] Testen Sie private Methoden mit JUnit
Der JUnit 5-Gradle-Test führt zu einem Fehler mit der Lombok-Annotation
Integrationstest mit Gradle
Machen Sie einen Unit-Test mit Junit.
[Java] So testen Sie, ob es in JUnit null ist
[CircleCI 2.0] [Java] [Maven] [JUnit] Aggregieren Sie die JUnit-Testergebnisse mit CircleCI 2.0
Erstellen und testen Sie Java + Gradle-Anwendungen mit Wercker
Erstellen Sie mit Gradle ein Java-Multiprojekt
[Java] JUnit4-Testfallbeispiel
Testen Sie die Web-API mit junit
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
Erstellen eines Java-Projekts mit Gradle
Ausgabe Testabdeckung mit Klee + Gradle
Testen Sie den Spring Framework Controller mit Junit
[Java] Erstellen Sie mit Gradle ein ausführbares Modul
So filtern Sie den JUnit-Test in Gradle
Steuern Sie die Testreihenfolge in Junit4 mit einem Aufzählungstyp
CICS-Java-Anwendung ausführen- (3) Build-Management mit Gradle
So testen Sie den privaten Bereich mit JUnit
Primzahlbeurteilung Java
Machen Sie die SpringBoot1.5 + Gradle4.4 + Java8 + Docker-Umgebung mit Java11 kompatibel
Führen Sie eine statische Code-Analyse mit Checkstyle mit Java + Gradle durch
So testen Sie Interrupts während Thread.sleep mit JUnit
Einfacher JUnit-Test der Elasticsearch 2018-Version mit Embedded-Elasticsearch
Erstellen Sie eine E2E-Testumgebung mit Selenium (Java).
Erstellen Sie mit Gradle mit VSCode Java → Ausführen
[Java] Hallo Welt mit Java 14 x Spring Boot 2.3 x JUnit 5 ~
Testcode mit Mock mit JUnit (EasyMock Center)
Mischen Sie Testfälle mit JUnit 5 und Standardmethoden
Implementierung der Pagenationsfunktion
Implementierung von XLPagerTabStrip mit TabBarController
[Rails] Pagenation mit Ajax kompatibel machen
[Swift 5] Implementierung der Mitgliederregistrierung in Firebase
Einführung eines automatisierten Java-Tests mit JUnit 5 + Gradle
Führen Sie Maven unter Java 8 aus, während Sie unter Java 6 kompilieren und unter Java 11 testen
Testen Sie den Inhalt einer Excel-Datei mit JUnit
[JUnit 5-kompatibel] Schreiben Sie einen Test mit JUnit 5 mit Spring Boot 2.2, 2.3
[JUnit 5] Schreiben Sie einen Validierungstest mit Spring Boot! [Parametrisierungstest]
Überprüfen Sie die Abdeckung mit Codecov in der Java + Gradle + Wercker-Konfiguration
Ich habe jetzt einen Test mit Spring Boot + JUnit 5 geschrieben
Installieren Sie Java mit Homebrew
Verwenden Sie ProGuard mit Gradle
JUnit Teststart versuchen Sie etwas
Überprüfen Sie die Implementierung von Java toString ()
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Bequemer Download mit JAVA
Einfaches Memo von JUnit of Java
Erster Gradle Build (Java)
Installieren Sie Gradle auf ubuntu16.04
Java Unit Test Library-Arterien-Probe
Schalten Sie Java mit direnv
Datenkern beginnend mit Gradle
Implementierung der Heap-Sortierung (in Java)
[Schienen] Test mit RSpec
Testen Sie Nokogiri mit Rspec.
Java-Download mit Ansible
Automatisch mit Messgerät testen
Lasttest mit JMeter
Lass uns mit Java kratzen! !!
Verwenden Sie WebJars mit Gradle
Erstellen Sie Java mit Wercker