JUnit Anmerkungs-Tutorial mit Beispiel: Was ist @Test und @After?

Was ist JUnit Anmerkungen?

JUnit Anmerkungen ist eine spezielle Form syntaktischer Metadaten, die dem Java-Quellcode hinzugefügt werden können, um die Lesbarkeit und Struktur des Codes zu verbessern. Variablen, Parameter, Pakete, Methoden und Klassen können mit Anmerkungen versehen werden. Anmerkungen wurden eingeführt in Junit4, was Java-Code mehr macht readable und einfach. Das ist der große Unterschied zwischen Junit3 und Junit4 das Junit4 basiert auf Anmerkungen.

Mit dem Wissen über Anmerkungen in Junit5, man kann a leicht erlernen und umsetzen JUnit prüfen. Nachfolgend finden Sie die wichtigsten und häufig verwendeten JUnit Anmerkungsliste:

S.No. Anmerkungen Beschreibung
1. @Prüfung Diese Anmerkung ist ein Ersatz für org.junit.TestCase gibt an, dass die öffentliche Void-Methode, an die sie angehängt ist, als Testfall ausgeführt werden kann.
2. @Vor Diese Annotation wird verwendet, wenn Sie vor jedem Testfall eine Anweisung wie Vorbedingungen ausführen möchten.
3. @Vor dem Unterricht Diese Annotation wird verwendet, wenn Sie einige Anweisungen ausführen möchten, bevor alle Testfälle ausgeführt werden, z. B. muss die Testverbindung vor allen Testfällen ausgeführt werden.
4. @Nach dem Diese Annotation kann verwendet werden, wenn Sie nach jeder Anweisung einige Anweisungen ausführen möchten Testfall zum Beispiel zum Zurücksetzen von Variablen, Löschen temporärer Dateien, Variablen usw.
5. @Nach dem Unterricht Diese Annotation kann verwendet werden, wenn Sie einige Anweisungen nach allen Testfällen ausführen möchten, z. B. zum Freigeben von Ressourcen nach der Ausführung aller Testfälle.
6. @Ignores Diese Annotation kann verwendet werden, wenn Sie einige Anweisungen während der Testausführung ignorieren möchten, um beispielsweise einige Testfälle während der Testausführung zu deaktivieren.
7. @Test(timeout=500) Diese Anmerkung kann verwendet werden, wenn Sie während der Testausführung eine Zeitüberschreitung festlegen möchten, z. B. wenn Sie unter einem SLA (Service Level Agreement) arbeiten und Tests innerhalb einer bestimmten Zeit abgeschlossen werden müssen.
8. @Test(expected=IllegalArgumentException.class) Diese Anmerkung kann verwendet werden, wenn Sie während der Testausführung eine Ausnahme behandeln möchten. Wenn Sie beispielsweise überprüfen möchten, ob eine bestimmte Methode erfolgreich istwing angegebene Ausnahme oder nicht.

JUnit Beispiel für Anmerkungen

Lassen Sie uns eine Klasse erstellen, die wichtige Themen abdeckt JUnit Annotationen mit einfachen print-Anweisungen erstellen und mit einer Test-Runner-Klasse ausführen:

Schritt 1) Betrachten Sie die folgende Java-Klasse mit verschiedenen Methoden, die an die oben aufgeführten Anmerkungen angehängt sind:

JunitAnnotationsExample.java

package guru99.junit;		

import static org.junit.Assert.assertEquals;				
import static org.junit.Assert.assertFalse;				

import java.util.ArrayList;		

import org.junit.After;		
import org.junit.AfterClass;		
import org.junit.Before;		
import org.junit.BeforeClass;		
import org.junit.Ignore;		
import org.junit.Test;		

public class JunitAnnotationsExample {				

    private ArrayList<String> list;					

    @BeforeClass		
    public static void m1() {							
        System.out.println("Using @BeforeClass , executed before all test cases ");					
    }		

    @Before		
    public void m2() {					
        list = new ArrayList<String>();					
        System.out.println("Using @Before annotations ,executed before each test cases ");					
    }		

    @AfterClass		
    public static void m3() {							
        System.out.println("Using @AfterClass ,executed after all test cases");					
    }		

    @After		
    public void m4() {					
        list.clear();			
        System.out.println("Using @After ,executed after each test cases");					
    }		

    @Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

    @Ignore		
    public void m6() {					
        System.out.println("Using @Ignore , this execution is ignored");					
    }		

    @Test(timeout = 10)			
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

    @Test(expected = NoSuchMethodException.class)					
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					

    }		

}		

Schritt 2) Erstellen wir eine Test-Runner-Klasse, um den obigen Test auszuführen:

TestRunner.java

package guru99.junit;		

import org.junit.runner.JUnitCore;		
import org.junit.runner.Result;		
import org.junit.runner.notification.Failure;		

public class TestRunner {				
			public static void main(String[] args) {									
      Result result = JUnitCore.runClasses(JunitAnnotationsExample.class);					
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

erwartetes Ergebnis

  • Alle Testfälle werden einzeln ausgeführt und alle Druckanweisungen können auf einer Konsole angezeigt werden.
  • Wie in der obigen Tabelle beschrieben @Before-Annotation in JUnit, @BeforeClass [ Methode m1() und m2() ] wird vor jedem bzw. vor allen Testfällen ausgeführt.
  • Auf die gleiche Weise @After in JUnit, @afterClass (Methode m3() und m4()) wird nach jedem bzw. nach allen Testfällen ausgeführt. @ignore (Methode m6()) wird so behandelt, als würde der Test ignoriert.

Lassen Sie uns die in der obigen Java-Klasse verwendeten Testfälle im Detail analysieren:

  1. Betrachten Sie die Methode m5() wie unten angegeben:
	@Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

In der obigen Methode fügen Sie also eine Zeichenfolge in die Variable „list“ ein

  • Liste ist leer() wird false zurückgeben.
  • behauptenFalse(list.isEmpty()) muss true zurückgeben.
  • Infolgedessen wird der Testfall passieren.

Da Sie der Liste nur eine Zeichenfolge hinzugefügt haben, beträgt die Größe eins.

  • list.size() muss den int-Wert als „1“ zurückgeben.
  • So behauptenEquals(1, list.size()) muss true zurückgeben.
  • Infolgedessen wird der Testfall passieren.
  1. Betrachten Sie die Methode m7() wie unten angegeben:
@Test(timeout = 10)		
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

Wie oben besprochen @Test(timeout = 10)Annotation wird verwendet, um eine Zeitüberschreitung im Testfall zu erzwingen.

  1. Betrachten Sie die Methode m8() wie unten angegeben:
@Test(expected = NoSuchMethodException.class)				
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					
    
    }		

Wie oben besprochen @Test(erwartet) prüft während der Ausführung auf eine bestimmte Ausnahme, sodass die Methode m8() „Keine solche Methodenausnahme“ auslöst. Daher wird der Test mit einer Ausnahme ausgeführt.

Da alle Testfälle bestanden sind, führt dies zu einer erfolgreichen Testausführung.

Tatsächliche Ergebnis

Da es im obigen Beispiel drei Testfälle gibt, werden alle Testfälle einzeln ausgeführt. Siehe Ausgabe unten:

JUnit Beispiel für Anmerkungen
JUnit Beispiel für Anmerkungen

Siehe folgende Druckanweisungen, die auf der Konsole angezeigt werden können:

Mit @BeforeClass vor allen Testfällen ausgeführt

Verwendung von @Before-Annotationen, die vor jedem Testfall ausgeführt werden

Mit @After nach jedem Testfall ausgeführt

Verwendung von @Before-Annotationen, die vor jedem Testfall ausgeführt werden

Mithilfe von @Test(timeout) kann eine Zeitüberschreitung erzwungen werden JUnit4 Testfall

Mit @After nach jedem Testfall ausgeführt

Verwendung von @Before-Annotationen, die vor jedem Testfall ausgeführt werden

Mit @Test(expected) wird während der Ausführung nach einer bestimmten Ausnahme gesucht

Mit @After nach jedem Testfall ausgeführt

Mit @AfterClass wird es nach allen Testfällen ausgeführt

JUnit Assert-Klasse

Diese Klasse stellt eine Reihe von Assertionsmethoden bereit, die beim Schreiben eines Testfalls nützlich sind. Wenn alle Assert-Anweisungen bestanden werden, sind die Testergebnisse erfolgreich. Wenn eine Assert-Anweisung fehlschlägt, sind die Testergebnisse fehlgeschlagen.

Wie Sie bereits gesehen haben, werden in der folgenden Tabelle wichtige Assert-Methoden und deren Beschreibung beschrieben:

S.No. Versandart Beschreibung
1. void AssertEquals(boolescher Wert erwartet, boolescher Istwert) Es prüft, ob zwei Werte gleich sind, ähnlich der Methode „equals“ der Klasse „Object“.
2. void affirmFalse(boolesche Bedingung) Die Funktionalität besteht darin, zu überprüfen, ob eine Bedingung falsch ist.
3. voidassuertNotNull(Object object) Mit der Funktion „assertNotNull“ wird überprüft, ob ein Objekt nicht null ist.
4. voidassuertNull(Object object) Die Funktion „assertNull“ besteht darin, zu überprüfen, ob ein Objekt null ist.
5. voidassuertTrue(boolesche Bedingung) Die Funktion „assertTrue“ besteht darin, zu überprüfen, ob eine Bedingung wahr ist.
6. void fail() Wenn Sie einen Assertionsfehler auslösen möchten, gibt es fail(), das immer zu einem Fehlerurteil führt.
7. void AssertSame([String-Nachricht] Die Funktion „assertSame“ besteht darin, zu überprüfen, ob die beiden Objekte auf dasselbe Objekt verweisen.
8. void AssertNotSame([String-Nachricht] Die Funktion „assertNotSame“ besteht darin, zu überprüfen, ob die beiden Objekte nicht auf dasselbe Objekt verweisen.

JUnit Klasse „Testfälle“.

Um mehrere Tests auszuführen, ist die TestCase-Klasse verfügbar in org.junit.Testfall Pakete. @Test-Annotation erzählt JUnit dass diese öffentliche Void-Methode (hier Testfall), an die sie angehängt ist, als Testfall ausgeführt werden kann.

Die folgende Tabelle zeigt einige wichtige Methoden, die in verfügbar sind org.junit.Testfall Klasse:

S.No. Versandart Beschreibung
1. int countTestCases() Mit dieser Methode wird gezählt, wie viele Testfälle ausgeführt wurden run(TestResult tr) Methode.
2. TestResult createResult() Mit dieser Methode wird ein erstellt Testergebnis Objekt.
3. String getName () Diese Methode gibt einen String zurück, der nichts anderes als ein ist Testfall.
4. TestResult run() Mit dieser Methode wird ein Test ausgeführt, der a zurückgibt Testergebnis Objekt
5. void run(TestResult-Ergebnis) Diese Methode wird verwendet, um einen Test mit a auszuführen Testergebnis Objekt, das nichts zurückgibt.
6. void setName (String name) Diese Methode wird verwendet, um einen Namen für a festzulegen Testfall.
7. void setUp() Diese Methode wird zum Schreiben von Ressourcenzuordnungscode verwendet. Erstellen Sie beispielsweise eine Datenbankverbindung.
8. void TearDown() Diese Methode wird zum Schreiben des Ressourcenfreigabecodes verwendet. Geben Sie beispielsweise die Datenbankverbindung frei, nachdem Sie eine Transaktion durchgeführt haben operation.

JUnit TestResult-Klasse

Wenn Sie einen Test ausführen, gibt er ein Ergebnis zurück (in der Form: Testergebnis Objekt). Dieses TestResult-Objekt kann zur Analyse des resultierenden Objekts verwendet werden. Dieses Testergebnis kann entweder fehlgeschlagen oder erfolgreich sein.

In der folgenden Tabelle finden Sie wichtige Methoden, die in der Organisation verwendet werden.junit.TestResult-Klasse:

S.No. Versandart Beschreibung
1. void addError(Test test, Throwable t) Diese Methode wird verwendet, wenn Sie dem Test einen Fehler hinzufügen müssen.
2. void addFailure(Test test, AssertionFailedError t) Diese Methode wird verwendet, wenn Sie einen Fehler zur Fehlerliste hinzufügen möchten.
3. void endTest(Testtest) Diese Methode wird verwendet, um zu benachrichtigen, dass ein Test durchgeführt (abgeschlossen) wurde.
4. int errorCount() Diese Methode wird verwendet, um den während der Testausführung erkannten Fehler abzurufen.
5. Aufzählung Fehler() Diese Methode gibt einfach eine Sammlung (hier Aufzählung) von Fehlern zurück.
6. int failCount() Mit dieser Methode wird die Anzahl der während der Testausführung erkannten Fehler ermittelt.
7. Void-Lauf (TestCase-Test) Mit dieser Methode wird ein Testfall ausgeführt.
8. int runCount() Diese Methode zählt einfach den ausgeführten Test.
9. void startTest(Testtest) Diese Methode wird verwendet, um zu benachrichtigen, dass ein Test gestartet wurde.
10 void stop() Diese Methode dient dazu, den Testlauf zu stoppen.

JUnit Testsuite-Klasse

Wenn Sie mehrere Tests in einer bestimmten Reihenfolge ausführen möchten, können Sie dies tun, indem Sie alle Tests an einem Ort zusammenfassen. Dieser Ort wird als Testsuite bezeichnet.

In der folgenden Tabelle finden Sie wichtige Methoden, die in verwendet werden org.junit.TestSuite Klasse:

S.No. Versandart Beschreibung
1. void addTest(Testtest) Diese Methode wird verwendet, wenn Sie der Suite einen Test hinzufügen möchten.
2. void addTestSuite(Class testClass) Diese Methode wird verwendet, wenn Sie die Klasse angeben möchten, während Sie der Suite einen Test hinzufügen.
3. int countTestCases() Diese Methode wird verwendet, wenn Sie die Anzahl der Testfälle zählen möchten.
4. String getName () Mit dieser Methode wird der Name der Testsuite ermittelt.
5. void run(TestResult-Ergebnis) Diese Methode wird verwendet, um einen Test auszuführen und Testergebnisse zu sammeln Testergebnis Objekt.
6. void setName (String name) Mit dieser Methode wird der Name festgelegt TestSuite.
7. Test testAt(int index) Diese Methode wird verwendet, wenn Sie den Test an einem bestimmten Index zurückgeben möchten.
8. int testCount() Diese Methode wird verwendet, wenn Sie mehrere Tests in der Suite zurückgeben möchten.
9. statische Testwarnung (String-Nachricht) Diese Methode gibt einen Test zurück, der fehlschlägt und eine Warnmeldung protokolliert.

Zusammenfassung

  • JUnit stellt eine portable API bereit, die alle wichtigen Klassen bereitstellt und Selenium Anmerkungen, die beim Schreiben eines Komponententests nützlich sind.
  • Klassen, die beim Schreiben eines Testfalls sehr nützlich sind
    • org.junit.Behaupten
    • org.junit.Testfall
    • org.junit.Testergebnis
    • org.junit.TestSuite
  • Wichtig und häufig verwendet JUnit Anmerkungsliste@Before@BeforeClass@After

    @Nach dem Unterricht

    @Prüfung

    @Ignorieren