[JAVA] Mischen Sie Testfälle mit JUnit 5 und Standardmethoden

Bei der Implementierung von E2E-Tests mit JUnit im Test Runner habe ich die Testklasse für jeden Bildschirm und jede API aufgeteilt. Zu diesem Zeitpunkt habe ich darüber nachgedacht, wie eine Testmethode definiert werden kann, die mehreren Testklassen gemeinsam ist.

(1) Vererbungsbeziehung verwenden

Durch Definieren einer gemeinsamen Testmethode in der übergeordneten Klasse der Testklasse wird die Testmethode der übergeordneten Klasse auch ausgeführt, wenn jede Testklasse ausgeführt wird.

Das Verhalten, das jeder Testklasse eigen ist, wird als Schnittstelle (oder abstrakte Methode der übergeordneten Klasse) definiert, und die allgemeine Testmethode verwendet diese Schnittstelle, um den Test zu implementieren.

public abstract class CommonTestA {
	//Eine abstrakte Methode zum Definieren eines für eine Testklasse spezifischen Verhaltens
    abstract SomeObject doSomething();
    
    @Test
    public void commonTestX() {
        // doSomething()So implementieren Sie einen allgemeinen Testfall mit
    }
}
//CommonTest beim Ausführen dieser Testklasse.commonTestX()Wird auch ausgeführt
public class TestClass extends CommonTestA {
    //Implementieren Sie Testfälle, die für die Testklasse spezifisch sind
}

Mit dieser Methode kann eine Testklasse aufgrund von Java-Vererbungsbeschränkungen nur eine gemeinsame Testklasse erben. Dies ist ein Problem, wenn Sie mehrere gemeinsame Testklassen erstellen möchten.

(2) Verwenden Sie die Standardmethode

Problem (1) kann vermieden werden, indem die in Java 8 eingeführte Standardmethode der Schnittstelle verwendet wird. (Da mehrere Schnittstellen in einer Klasse implementiert werden können.) In JUnit 4 und früheren Versionen wird die Standardmethode jedoch nicht in der Implementierungsklasse ausgeführt, sodass JUnit 5 verwendet werden muss.

public interface CommonTestA {
    SomeObject doSomething();

    @Test
    default void commonTestA() {
        //Definieren Sie eine allgemeine Testmethode als Standardmethode
    }
}
//In einer Testklasse können mehrere gemeinsame Testschnittstellen implementiert werden
public class TestClassX implements CommonTestA, ComonTestB {
	// ...
}

Recommended Posts

Mischen Sie Testfälle mit JUnit 5 und Standardmethoden
[Java] Testen Sie private Methoden mit JUnit
Machen Sie einen Unit-Test mit Junit.
Testen Sie die Web-API mit junit
Testen Sie private Methoden in JUnit
Testen Sie private Methoden in JUnit
Java 8 studieren (StaticIF und Standardmethode)
Kopieren Sie den Test und fügen Sie ihn mit RSpec ein
Testen Sie den Spring Framework Controller mit Junit
Steuern Sie die Testreihenfolge in Junit4 mit einem Aufzählungstyp
So testen Sie eine private Methode, die ein Array- oder Argument variabler Länge in JUnit verwendet
So testen Sie den privaten Bereich mit JUnit
Der JUnit 5-Gradle-Test führt zu einem Fehler mit der Lombok-Annotation
[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
Eine Methode unterstützt mehrere Testfälle mit @ParameterizedTest!
[Ruby] Schlüsselwörter mit Schlüsselwörtern und Standardwerten von Argumenten
Ausführen einer Methode und Verspotten mit JUnit
Einführung automatisierter Java-Tests mit JUnit 5 + Apache Maven
So testen Sie Interrupts während Thread.sleep mit JUnit
Erstellen und testen Sie Java + Gradle-Anwendungen mit Wercker
Einfacher JUnit-Test der Elasticsearch 2018-Version mit Embedded-Elasticsearch
Testcode mit Mock mit JUnit (EasyMock Center)
Visualisieren Sie die in TestNG ausgeführte Testmethode im Listener
Funktionen und Methoden
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]
Testen Sie die Web-API mit junit
Ich habe jetzt einen Test mit Spring Boot + JUnit 5 geschrieben