[JAVA] Einführung in JUnit (Studiennotiz)

Was ist ein Unit Test?

Ein Test, um sicherzustellen, dass der von Ihnen geschriebene Code wie erwartet funktioniert. Wird auch als Unit-Test bezeichnet. JUnit ist ein sehr bekanntes Framework für Unit-Tests in Java. Das Schreiben von Testprogrammen unter Verwendung eines gemeinsamen Frameworks erleichtert anderen das Ändern ihrer Testprogramme.

Super grundlegender Testfluss

    1. Schreiben Sie eine Testmethode, die dieselbe Funktionalität wie die zu testende Methode hat.
  1. Vergleichen Sie das für die Methode erforderliche Ergebnis mit dem tatsächlichen Ergebnis mithilfe der assert-Methode (siehe unten).
    1. Wenn sich die Vergleichsergebnisse unterscheiden, schlägt der Test fehl, andernfalls ist der Test erfolgreich.

Setup (mit IntelliJ)

https://stackoverflow.com/questions/19330832/setting-up-junit-with-intellij-idea https://www.slideshare.net/SatoshiKubo1/junitjava

Art der Assert-Methode

Zur Bestätigung der Testergebnisse werden verschiedene Zusicherungen verwendet. assertEquals() → Stellen Sie fest, ob das erwartete Ergebnis mit dem tatsächlichen Ergebnis übereinstimmt. Argument 1: (erwartet, tatsächlich) Argument 2: (String-Nachricht, erwartet, aktuell) - Eine Nachricht wird angezeigt, wenn der Test fehlschlägt. Argument 3: (erwartet, tatsächlich, Delta) - Delta ist die Toleranz. Argument 4: (String-Nachricht, doppelt erwartet, doppelt tatsächlich, doppelt Delta) - assertNotNull() → Beurteilen Sie, ob das angegebene Objekt nicht null ist. Argument 1: (Objekt Objekt) Argument 2: (String-Nachricht, Objektobjekt) - Eine Nachricht wird angezeigt, wenn der Test fehlschlägt. assertNull() → Beurteilen Sie, ob das angegebene Objekt Null ist. Argument 1: (Objekt Objekt) Argument 2: (String-Nachricht, Objektobjekt) - Eine Nachricht wird angezeigt, wenn der Test fehlschlägt. assertSame() → Beurteilen Sie, ob sich die beiden angegebenen Objekte auf dasselbe Objekt beziehen. Argument 1: (Objekt erwartet, Objekt tatsächlich) Argument 2: (String-Nachricht, Objektobjekt) - Eine Nachricht wird angezeigt, wenn der Test fehlschlägt. assertTrue() → Beurteilen Sie, ob die angegebenen Bedingungen korrekt sind. Argument 1: (Objekt erwartet, Objekt tatsächlich) Argument 2: (String-Nachricht, Objektobjekt) - Eine Nachricht wird angezeigt, wenn der Test fehlschlägt. assertThat() In Kombination mit Matcher ist dies bequemer als assertEquals (). Da in einem Objekt nur ein equals () erstellt werden kann, hat assertEquals () seine Grenzen.

Argumente: (Objekt aktuell, Matcher-Matcher) Details

wichtiger Punkt

Die Reihenfolge spielt keine Rolle

Die Methoden in der Testklasse werden nicht in der Reihenfolge von oben ausgeführt. Schreiben Sie daher keine Testmethoden, die die obigen Testergebnisse annehmen.

Erzeugt keine Nebenwirkungen

Erstellen Sie keine "Nebenwirkungen", die den Status des Systems ändern, z. B. das Aktualisieren der Datenbank, wenn Tests durchgeführt werden.

Geben Sie einen beschreibenden Methodennamen an

Damit diejenigen, die den Code später lesen, den Zweck des Tests schnell verstehen können.

Schreiben Sie leicht verständlichen Code

Das gleiche wie oben. Einfach und leicht zu verstehen ohne Abfall.

Dokumentieren Sie den Testplan in Javadoc

Manuelles Schreiben + viele Fehler + schwer mit Updates Schritt zu halten.

So klein und schnell wie möglich

Häufig und einfach testen zu können.

Andere nützliche Methoden

Wenn Sie zu Beginn und am Ende mehrerer Methoden eine allgemeine Verarbeitung (Verbinden / Trennen der Datenbank usw.) durchführen möchten, verwenden Sie die Methoden setUp () und tearDown (). setUp() Wird ausgeführt, bevor jede Testmethode aufgerufen wird. tearDown() Wird nach dem Ende jeder Testmethode ausgeführt.

TestSuite-Klasse

Wie oben erwähnt, werden die Testmethoden nicht in der Reihenfolge ausgeführt, in der sie geschrieben wurden. Sie können jedoch die TestSuite-Klasse verwenden, um die Reihenfolge anzugeben, in der die Testmethoden ausgeführt werden.

Referenzquelle

Recommended Posts

Einführung in JUnit (Studiennotiz)
Einführung in Ruby 2
Einführung in web3j
Einführung in Micronaut 1 ~ Einführung ~
[Java] Einführung in Java
Einführung in die Migration
Einführung in Java
Einführung in Doma
Verwendungshinweise zu JUnit5
Einführung in JAR-Dateien
Einführung in Ratpack (8) -Session
Migrieren Sie von JUnit 4 zu JUnit 5
Einführung in die Bitarithmetik
Einführung in Ratpack (6) --Promise
Einführung in Ratpack (9) - Thymeleaf
Einführung in PlayFramework 2.7 ① Übersicht
Einführung in das Android-Layout
Einführung in Entwurfsmuster (Einführung)
Punkt Installationsstudie Memo 01
Einführung in die praktische Programmierung
Einführung in den Befehl javadoc
Einführung in den Befehl jar
Einführung in Ratpack (2) -Architektur
Einführung in den Lambda-Stil
Einführung in den Java-Befehl
Einführung in die Keycloak-Entwicklung
Einführung in den Befehl javac
[Persönliches Memo] Ich habe versucht, die Objektorientierung leicht zu studieren
Einführung in Entwurfsmuster (Builder)
Play Framework Study Memo Database ①
Einführung in die Android App-Entwicklung
Einführung in Ratpack (5) --Json & Registry
Verwendung von JUnit (Anfänger)
Einführung in Ratpack (7) - Guice & Spring
(Punktinstallation) Einführung in Java8_Impression
Einführung in Entwurfsmuster (Composite)
Einführung in Micronaut 2 ~ Unit Test ~
Einführung in Spring Boot ~ ~ DI ~
Einführung in Designmuster (Fliegengewicht)
[Java] Einführung in den Lambda-Ausdruck
Einführung in Spring Boot ② ~ AOP ~
Einführung in Apache Beam (2) ~ ParDo ~
Einführung in die EHRbase 2-REST-API
Einführung in Entwurfsmuster Prototyp
Java Study Memo 2 mit Progate
Wie schreibe ich Junit 5 organisiert