Heim > Java > JavaErste Schritte > Hauptteil

Verwendung des White-Box-Test-Frameworks (JUnit)

**
Freigeben: 2021-12-08 19:22:02
Original
3383 Leute haben es durchsucht

Junit-Framework:

Junit ist ein Open-Source-Java-Unit-Test-Framework.

Heute stellen wir junit5 vor. junit5 besteht aus drei verschiedenen Teilprojektmodulen, darunter Junit Platform, Junit Jupiter und Junit Vintage. Es unterstützt Java 8 und höher. Der Editor, den ich hier verwende, ist IntelliJ IDEA. Sie müssen nur das Endergebnis überprüfen, um festzustellen, ob die Methodenschnittstelle des gesamten Projekts reibungslos funktioniert. Jeder Unit-Testfall ist relativ unabhängig, wird von Junit gestartet und automatisch aufgerufen. Es müssen keine zusätzlichen Aufrufanweisungen hinzugefügt werden.

Testmethoden hinzufügen, löschen und blockieren, ohne andere Testmethoden zu beeinträchtigen.

Junit wird hauptsächlich für White-Box-Tests verwendet:

1 Testplanungsphase: Entwickeln Sie den Testplan gemäß der Anforderungsspezifikation.

2. Testentwurfsphase: Entsprechend der Funktion des Codes werden Testfälle manuell entworfen, um grundlegende Funktionstests durchzuführen. Gemäß der Programmieranleitung wird die Softwarestruktur aufgeteilt und Testfälle nach bestimmten standardisierten Methoden entworfen.

3. Testausführungsphase: Testfälle eingeben und Testergebnisse erhalten.

4. Phase der Testzusammenfassung: Vergleichen Sie die Testergebnisse mit den erwarteten Ergebnissen des Codes, analysieren Sie die Fehlerursache, finden und beheben Sie den Fehler.

Als nächstes stellen wir die darin enthaltenen Anmerkungen vor:

@Test: Stellt die Testmethode dar, ohne irgendwelche Attribute zu deklarieren.

@ParameterizedTest: Zeigt an, dass es sich bei der Methode um eine Testmethode handelt. Darüber hinaus kann diese Annotation auch die mehrfache Ausführung einer Testmethode mit verschiedenen Personen ermöglichen.

@RepeatedTest: Diese Annotation ermöglicht es der Testmethode, die Anzahl der wiederholten Läufe anzupassen.

@TestFactory: Zeigt an, dass eine Methode auf einer datengesteuerten dynamischen Testdatenquelle basiert.

@Displayname: Deklarieren Sie einen benutzerdefinierten Anzeigenamen für die Testklasse oder Testmethode.

@BeforeEach: Gibt an, dass die angegebene Methode ausgeführt wird, bevor jede Testmethode ausgeführt wird.

@AfterEach: Gibt an, dass die angegebene Methode ausgeführt wird, nachdem jede Testmethode ausgeführt wurde.

@BeforeAll: Diese Methode wird vor allen Testmethoden der aktuellen Klasse ausgeführt und kann Initialisierungscode enthalten.

@AfterAll: Wird nach allen Testmethoden der aktuellen Klasse ausgeführt.

@Disabled: Zeigt an, dass eine Testklasse oder -methode ungültig ist.

Behauptung:

Fehlgeschlagen: Behauptungstest fehlgeschlagen.

AssertTrue/asserFalse: Behauptet wahr oder falsch.

AssertNull/assertNotNull: Assert ist null oder nicht null.

assertEquals/assertNotEquals: Behaupten, dass zwei Werte ungleich sind.

AssertArrayEquals: Stellt sicher, dass alle Array-Elemente gleich sind.

AssertSame/assertNotSame: Bestätigt, ob zwei Objekte gleich sind.

AssertThrows/assertDoesNotThrow: Bestätigen, ob eine Ausnahme ausgelöst wird.

AssertAll: Stellen Sie sicher, dass mehrere Bedingungen erfüllt sind.

Unten erstellen wir eine Klasse und mehrere Methoden:

package test;//包机制
import java.lang.reflect.Array;
public class MixedOperation {
    public int mixeOperation(int x,int y){
        return division((x+y),y);
    }
    public int division(int x,int y){
        int result=(x/y);
        return result;
    }
    public static void main(String[] args) {
      MixedOperation mixedOperation=new MixedOperation();
      System.out.println(mixedOperation.mixeOperation(5,1));
    }
}
Nach dem Login kopieren

Wir erstellen eine Klasse namens MixedOperation;

package test;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
public class MixedOperationTest {
    private MixedOperation mixedOperation;
    @BeforeEach
    public void init(){
      mixedOperation=new MixedOperation();
    }
    @Test
    public void successTest(){
        System.out.println("run a test:x=4,y=2");
        int result=mixedOperation.mixeOperation(4,2);
        Assertions.assertEquals(3,result);
    }
   /* @DisplayName("失败")
    public void errorTest(){`
        System.out.println("run a test:x=4,y=0");
        ArithmeticException exception=new ArithmeticException(
                ArithmeticException.class -> {
            mixedOperation.mixeOperation(4, 0);
        }
        );
    }*/
    @Disabled("参数")
    @Test
    @DisplayName("参数")
    @ParameterizedTest
    @CsvSource({"6,3,3","5,2,3","6,2,4"})
    public void caTest(int x,int y,int excepted){
        System.out.println("run a test :x="+x+"y="+y);
        System.out.println(excepted);
        int t= mixedOperation.mixeOperation(x,y);
        Assertions.assertEquals(excepted,t);
    }
    @Disabled
    @Test
    public void  Next(){
       System.out.println("抛出一个异常");
       System.out.println(Assertions.assertThrows(IllegalArgumentException.class, () ->mixedOperation.mixeOperation(2,0)));
    }
    @Disabled
    @Test
    void error(){
        Assertions.assertThrows(Exception.class,()->{Assertions.assertEquals(1,0);});
    }
    @Test
    void sure(){
        int result=mixedOperation.mixeOperation(4,2);
        Assertions.assertTrue(3==result);//断言相等
    }
}
Nach dem Login kopieren

Hier erstellen wir einen Test namens MixedOperationTest Class;

Verwandte Empfehlungen: „Java-Video-Tutorial

Das obige ist der detaillierte Inhalt vonVerwendung des White-Box-Test-Frameworks (JUnit). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!