Implementieren Sie einen tabellengesteuerten Test in Java 14

Einführung

Java 14 wurde also endlich veröffentlicht Der zuvor in Implementieren eines tabellengesteuerten Tests in Java eingeführte Quellcode, Ich habe versucht, es mit Records neu zu schreiben, das als Vorschau in Java 14 hinzugefügt wurde.

Tabellengesteuerter Test vor Java 14

Im vorherigen Quellcode Ich habe den Testfall in einer inneren Klasse namens TestCase aufbewahrt. Konstruktoren und Getter wurden mit Lombok definiert.

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.experimental.Accessors;
import org.junit.jupiter.api.*;

import java.util.stream.Stream;

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

class MathTest {

    @Nested
    static class Pow {

        @AllArgsConstructor
        @Getter
        @Accessors(fluent = true)
        static class TestCase {
            private String name;
            private double x;
            private double y;
            private double expected;
        }

        @TestFactory
        Stream<DynamicNode> testPow() {
            return Stream.of(
                    new TestCase("pow(2,1)", 2, 1, 2),
                    new TestCase("pow(2,2)", 2, 2, 4),
                    new TestCase("pow(2,3)", 2, 3, 8),
                    new TestCase("pow(2,0)", 2, 0, 1),
                    new TestCase("pow(2,-1)", 2, -1, 0.5),
                    new TestCase("pow(2,+Inf)", 2, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY),
                    new TestCase("pow(2,-Inf)", 2, Double.NEGATIVE_INFINITY, 0),
                    new TestCase("pow(+Inf,2)", Double.POSITIVE_INFINITY, 2, Double.POSITIVE_INFINITY),
                    new TestCase("pow(-Inf,2)", Double.NEGATIVE_INFINITY, 2, Double.POSITIVE_INFINITY)
            ).map(testCase -> DynamicTest.dynamicTest(
                    testCase.name(),
                    () -> {
                        double result = Math.pow(testCase.x(), testCase.y());
                        assertEquals(testCase.expected(), result);
                    })
            );
        }
    }

}

Java 14 Table Driven Test

In diesem Quellcode Geändert, um den Testfall aufzuzeichnen. Durch die Verwendung von record konnte ich die Codemenge im Vergleich zur Verwendung von Lombok reduzieren.

import org.junit.jupiter.api.DynamicNode;
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.TestFactory;

import java.util.stream.Stream;

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

public class MathTest {

    @Nested
    static class Pow {

        record TestCase(String name, double x, double y, double expected) {
        }

        @TestFactory
        Stream<DynamicNode> testPow() {
            return Stream.of(
                    new TestCase("pow(2,1)", 2, 1, 2),
                    new TestCase("pow(2,2)", 2, 2, 4),
                    new TestCase("pow(2,3)", 2, 3, 8),
                    new TestCase("pow(2,0)", 2, 0, 1),
                    new TestCase("pow(2,-1)", 2, -1, 0.5),
                    new TestCase("pow(2,+Inf)", 2, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY),
                    new TestCase("pow(2,-Inf)", 2, Double.NEGATIVE_INFINITY, 0),
                    new TestCase("pow(+Inf,2)", Double.POSITIVE_INFINITY, 2, Double.POSITIVE_INFINITY),
                    new TestCase("pow(-Inf,2)", Double.NEGATIVE_INFINITY, 2, Double.POSITIVE_INFINITY)
            ).map(testCase -> DynamicTest.dynamicTest(
                    testCase.name(),
                    () -> {
                        double result = Math.pow(testCase.x(), testCase.y());
                        assertEquals(testCase.expected(), result);
                    })
            );
        }
    }

}

Zusammenfassung

Wir hoffen, dass Sie den Quellcode mit neuen Funktionen weiter verbessern.

Recommended Posts

Implementieren Sie einen tabellengesteuerten Test in Java 14
Implementierung der zweistufigen Authentifizierung in Java
Implementieren Sie die Standardauthentifizierung in Java
Implementieren Sie eine Kombination aus Mathematik in Java
2 Implementieren Sie eine einfache Syntaxanalyse in Java
Implementieren Sie das Senden von E-Mails in Java
Implementieren Sie eine funktionsähnliche schnelle Sortierung in Java
Implementieren Sie rm -rf in Java.
Implementieren Sie die XML-Signatur in Java
3 Implementieren Sie einen einfachen Interpreter in Java
Implementieren Sie reCAPTCHA v3 in Java / Spring
Implementieren Sie die PHP-Implodierungsfunktion in Java
Versuchen Sie, Yuma in Java zu implementieren
1 Implementieren Sie eine einfache Phrasenanalyse in Java
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Implementieren Sie API Gateway Lambda Authorizer in Java Lambda
Versuchen Sie, n-ary Addition in Java zu implementieren
Java erstellt eine Tabelle in einem Word-Dokument
So erzwingen Sie Codierungskonventionen in Java
Implementieren Sie so etwas wie einen Stack in Java
Primzahlbeurteilung Java
Partisierung in Java
Änderungen in Java 11
Janken in Java
Umfangsrate in Java
FizzBuzz in Java
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
Testgetriebene Entwicklung mit der Funktionssprache Elm (Kapitel 15-16)
Testgetriebene Entwicklung mit der Funktionssprache Elm (Kapitel 5-7)
Ich habe ein Programm zur Beurteilung von Primzahlen in Java geschrieben
Ich habe versucht, neunundneunzig in Java auszugeben
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
Janken App in Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Ich habe versucht, die Firebase-Push-Benachrichtigung in Java zu implementieren
Kommentare in der Java-Quelle
Azure funktioniert in Java
Implementieren Sie Test Double in JUnit, ohne externe Bibliotheken zu verwenden
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
Java Unit Test Library-Arterien-Probe
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Implementieren Sie Singleton mit Enum schnell in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java