[JAVA] JUnit 5: Wie man Testfälle in enum schreibt

JUnit 5 enthält ** @ParameterizedTest ** -Anmerkungen, mit denen Sie Werte aus verschiedenen Argumentquellen als Argumente an Testmethoden übergeben können. In diesem Artikel möchte ich Ihnen zeigen, wie Sie mit einer dieser Argumentquellen, ** @EnumSource **, einfach viele Testfälle schreiben können.

Vorbereitung

Wenn Sie ** @ParameterizedTest ** verwenden, müssen Sie zusätzlich zu "junit-jupiter-engine" explizit "junit-jupiter-engine" als Projektabhängigkeit hinzufügen. In diesem Beispielcode wurde auch AssertJ verwendet, um die Testergebnisse zu überprüfen.

pom.xml

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.5.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-params</artifactId>
    <version>5.5.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.13.1</version>
    <scope>test</scope>
</dependency>

Vorbehaltlich des Tests

Hier werden wir die BigInteger # gcd () -Methode des JDK testen. Diese Methode gibt die maximale Verpflichtung von sich selbst und den angegebenen Argumenten zurück.

Schreiben Sie einen Testfall

Beschreiben wir einfach die Kombination zweier Eingabewerte und die richtige Antwort als Aufzählungstypkonstante.

enum GcdTestCase {
    THIS_IS_BIGGER(25, 10, 5),
    OTHER_IS_BIGGER(14, 21, 7),
    BOTH_ARE_EVEN(12, 8, 4),
    BOTH_ARE_ODD(27, 45, 9),
    BOTH_ARE_ZERO(0, 0, 0),
    BOTH_ARE_ONE(1, 1, 1),
    THIS_IS_ZERO(0, 3, 3),
    OTHER_IS_ZERO(4, 0, 4),
    THIS_IS_DIVISOR(3, 12, 3),
    OTHER_IS_DIVISOR(20, 4, 4),
    NO_COMMON_DIVISOR(7, 9, 1);

    final BigInteger a;
    final BigInteger b;
    final BigInteger expected;

    GcdTestCase(long a, long b, long expected) {
        this.a = BigInteger.valueOf(a);
        this.b = BigInteger.valueOf(b);
        this.expected = BigInteger.valueOf(expected);
    }
}

Ich habe vorerst 11 Testfälle erstellt, aber es ist relativ einfach, später Testfälle hinzuzufügen. Erhöhen Sie einfach den Enumerator.

Schreiben Sie eine Testmethode

Geben Sie die Annotation ** @ParameterizedTest ** für die Testmethode an, geben Sie jedoch gleichzeitig den oben erstellten Aufzählungstyp mit der Annotation ** @EnumSource ** an.

@ParameterizedTest
@EnumSource(GcdTestCase.class)
public void gcdShouldReturnGreatestCommonDivisorAsExpected(GcdTestCase test) {
    BigInteger actual = test.a.gcd(test.b);
    assertThat(actual).isEqualTo(test.expected);
}

Führen Sie den Test aus

Wenn Sie den Test ausführen, den Sie mit "mvn test" erstellt haben, sind natürlich alle Tests erfolgreich.

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.example.junit5.tips.BigIntegerTest
[INFO] Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.156 s - in org.example.junit5.tips.BigIntegerTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 11, Failures: 0, Errors: 0, Skipped: 0

Zusammenfassung

Dieses Mal habe ich vorgestellt, wie man mit ** @EnumSource ** von JUnit 5 einfach viele Testfälle schreibt. Der Beispielcode wird auf GitHub veröffentlicht. Die Lizenz lautet The Unlicense.

Recommended Posts

JUnit 5: Wie man Testfälle in enum schreibt
So filtern Sie den JUnit-Test in Gradle
Wie schreibe ich Junit 5 organisiert
Dynamisches Schreiben iterativer Testfälle mit test / unit (Test :: Unit)
So führen Sie JUnit in Eclipse aus
So beheben Sie das Systemdatum in JUnit
So testen Sie den privaten Bereich mit JUnit
[SpringBoot] So schreiben Sie einen Controller-Test
[Java] So testen Sie, ob es in JUnit null ist
[Java FX] So schreiben Sie Eclipse-Berechtigungen in build.gradle
Wie schreibe ich Rails
So testen Sie Interrupts während Thread.sleep mit JUnit
So testen Sie eine private Methode, die ein Array- oder Argument variabler Länge in JUnit verwendet
Wie schreibe ich Docker-Compose
Wie schreibe ich Mockito
So schreiben Sie Testcode mit Basic-Zertifizierung
So schreiben Sie eine Migrationsdatei
Wie schreibe ich Java String # getBytes in Kotlin?
Hinweise zum Schreiben von Kommentaren auf Englisch
So schreiben Sie einen Komponententest für Spring Boot 2
So schreiben Sie eine Datumsvergleichssuche in Rails
So testen Sie den Bildschirm zum Hochladen von Dateien mit Spring + Selenium
Wie schreibe ich einen Core Mod in Minecraft Forge 1.15.2
Wie man guten Code schreibt
[Rails] Verwendung von Enum
Verwendung von JUnit (Anfänger)
[Rails] Verwendung von Enum
Wie schreibe ich einen Java-Kommentar
Siehe Aufzählung in Thymeleaf
[Refactoring] So schreiben Sie Routing
Testen Sie private Methoden in JUnit
Testen Sie private Methoden in JUnit
Wie schreibe ich Rails Seed
Wie schreibe ich Rails Routing
[Erstellen] Verwendung von JUnit
Verwendung des Java-Aufzählungstyps (Enum) in Mapper XML von MyBatis
[Rails 5] japanMap-Link So schreiben Sie Parameter in die js.erb-Datei
[Rails] So schreiben Sie user_id (externer Schlüssel) in einen starken Parameter
Wie man Lombok im Frühling benutzt
So finden Sie May'n in XPath
So blenden Sie die Bildlaufleiste in WebView aus
Wie man in Ruby auf unbestimmte Zeit iteriert
Java # 6 studieren (Wie man Blöcke schreibt)
Wie man Ant in Gradle ausführt
Schreiben Sie den Testcode mit Spring Boot
Wie man die Programmierung in 3 Monaten beherrscht
Wie man JAVA in 7 Tagen lernt
So erhalten Sie Parameter in Spark