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

Was ist JUnit Anmerkungen?

JUnit Anmerkungen ist eine spezielle Form syntaktischer Metadaten, die hinzugefรผgt werden kรถnnen Java Quellcode fรผr bessere Lesbarkeit und Struktur des Codes. Variablen, Parameter, Pakete, Methoden und Klassen kรถnnen annotiert werden. Annotationen wurden in Junit4 eingefรผhrt, was Java Code lesbarer und einfacher. Das ist der groรŸe Unterschied zwischen Junit3 und Junit4, dass Junit4 auf Annotationen basiert.

Mit dem Wissen รผber Annotationen in Junit5 kann man leicht lernen und implementieren eine JUnit prรผfen. Nachfolgend finden Sie die wichtigsten und hรคufig verwendeten JUnit Anmerkungsliste:

S.No. Anmerkungen Beschreibung
1. @Prรผfung Diese Annotation ist ein Ersatz fรผr org.junit.TestCase und 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 Annotation kann verwendet werden, wenn Sie wรคhrend der Testausfรผhrung Ausnahmen behandeln mรถchten. Zum Beispiel, wenn Sie prรผfen mรถchten, ob eine bestimmte Methode eine bestimmte Ausnahme auslรถst 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. Methodik 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.TestCase 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.TestCase Klasse:

S.No. Methodik 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() Mit dieser Methode wird Code zur Ressourcenfreigabe geschrieben. Beispielsweise: Datenbankverbindung nach der Durchfรผhrung einer Transaktionsoperation freigeben.

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.

Wichtige Methoden, die in der Klasse org.junit.TestResult verwendet werden, finden Sie in der Tabelle unten:

S.No. Methodik 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. Methodik 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.Assert
    • org.junit.TestCase
    • org.junit.TestResult
    • org.junit.TestSuite
  • Wichtig und hรคufig verwendet JUnit Anmerkungsliste@Before@BeforeClass@After

    @Nach dem Unterricht

    @Prรผfung

    @Ignorieren

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: