JUnit Výukový program pro anotace s příkladem: Co je @Test a @After

Co je to JUnit Anotace?

JUnit Anotace je speciální forma syntaktických metadat, ke kterým lze přidávat Java zdrojový kód pro lepší čitelnost a strukturu kódu. Proměnné, parametry, balíčky, metody a třídy mohou být anotovány. Anotace byly zavedeny v Junit4, což činí Java kód je čitelnější a jednodušší. To je velký rozdíl mezi Junit3 a Junit4, že Junit4 je založen na anotaci.

Se znalostí anotací v Junit5 se lze snadno naučit a implementovat a JUnit test. Níže jsou uvedeny důležité a často používané JUnit seznam anotací:

S.No. Anotace Description
1. @Test Tato anotace je náhradou za org.junit.TestCase, což znamená, že metoda public void, ke které je připojena, může být provedena jako testovací případ.
2. @Před Tato anotace se používá, pokud chcete před každým testovacím případem provést nějaký příkaz, jako jsou předběžné podmínky.
3. @Před hodinou Tato anotace se používá, pokud chcete provést některé příkazy předtím, než všechny testovací případy, např. testovací spojení, musí být provedeny před všemi testovacími případy.
4. @Po Tuto anotaci lze použít, pokud chcete po každém provést nějaké příkazy Testovací případ pro např. resetování proměnných, mazání dočasných souborů, proměnných atd.
5. @Po hodině Tuto anotaci lze použít, pokud chcete provést některé příkazy po všech testovacích případech, např. uvolnění prostředků po provedení všech testovacích případů.
6. @Ignoruje Tuto anotaci lze použít, pokud chcete ignorovat některé příkazy během provádění testu, např. pro deaktivaci některých testovacích případů během provádění testu.
7. @Test(časový limit=500) Tuto anotaci lze použít, pokud chcete během provádění testu nastavit určitý časový limit, například pokud pracujete pod nějakou SLA (Smlouva o úrovni služeb) a testy je třeba dokončit v určitém stanoveném čase.
8. @Test(očekávané=IllegalArgumentException.class) Tuto anotaci lze použít, pokud chcete během provádění testu zpracovat nějakou výjimku. Například, pokud chcete zkontrolovat, zda konkrétní metoda vyvolává zadanou výjimku nebo ne.

JUnit Příklad anotace

Vytvořme třídu pokrývající důležité JUnit anotace pomocí jednoduchých tiskových příkazů a spusťte je pomocí třídy testovacího běhu:

Krok 1) Zvažte níže třídu java s různými metodami, které jsou připojeny k výše uvedeným anotacím:

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");					

    }		

}		

Krok 2) pojďme vytvořit třídu testovacího běžce pro provedení výše uvedeného testu:

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());							
   }		
}      	

Očekávaný výsledek

  • Všechny testovací případy budou provedeny jeden po druhém a všechny tiskové prohlášení lze vidět na konzole.
  • Jak je uvedeno ve výše uvedené tabulce @Before anotace v JUnit, @BeforeClass [ metoda m1() a m2() ] bude provedena před každým a před všemi testovacími případy.
  • Stejným způsobem @After in JUnit, @afterClass (metoda m3() a m4()) bude provedena po každém a po všech testovacích případech. @ignore (metoda m6()) bude považováno za ignorování testu.

Pojďme podrobně analyzovat testovací případy použité ve výše uvedené třídě Java:

  1. Zvažte metodu m5(), jak je uvedeno níže:
	@Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

Ve výše uvedené metodě přidáváte řetězec do proměnné „list“ tak

  • list.isEmpty() vrátí false.
  • asseFalse(list.isEmpty()) musí vrátit true.
  • V důsledku toho bude testovací případ projít.

Protože jste do seznamu přidali pouze jeden řetězec, velikost je jedna.

  • list.size() musí vrátit hodnotu int jako „1“.
  • So sustainEquals(1, list.size()) musí vrátit true.
  • V důsledku toho bude testovací případ projít.
  1. Zvažte metodu m7(), jak je uvedeno níže:
@Test(timeout = 10)		
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

Jak je uvedeno výše @Test(časový limit = 10)anotace se používá k vynucení časového limitu v testovacím případě.

  1. Zvažte metodu m8(), jak je uvedeno níže:
@Test(expected = NoSuchMethodException.class)				
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					
    
    }		

Jak je uvedeno výše @Test (očekáváno) během provádění zkontroluje zadanou výjimku, takže metoda m8() vyvolá „No Such Method Exception“. V důsledku toho bude test proveden s výjimkou.

Když projdou všechny testovací případy, výsledkem je úspěšné provedení testu.

Skutečný výsledek

Protože ve výše uvedeném příkladu jsou tři testovací případy, všechny testovací případy budou provedeny jeden po druhém. Viz výstup níže:

JUnit Příklad anotace
JUnit Příklad anotace

Viz níže tisková prohlášení, která lze vidět na konzoli:

Pomocí @BeforeClass , provedené před všemi testovacími případy

Pomocí anotací @Before, které se spouštějí před každým testovacím případem

Pomocí @After se spustí po každém testovacím případě

Pomocí anotací @Before, které se spouštějí před každým testovacím případem

Pomocí @Test(timeout) jej lze použít k vynucení časového limitu JUnit4 testovací případ

Pomocí @After se spustí po každém testovacím případě

Pomocí anotací @Before, které se spouštějí před každým testovacím případem

Pomocí @Test(expected) zkontroluje během provádění zadanou výjimku

Pomocí @After se spustí po každém testovacím případě

Pomocí @AfterClass, provedené po všech testovacích případech

JUnit Assert Class

Tato třída poskytuje spoustu metod tvrzení užitečných při psaní testovacího případu. Pokud jsou všechna tvrzení potvrzena, výsledky testu jsou úspěšné. Pokud některý příkaz selže, jsou výsledky testu neúspěšné.

Jak jste viděli dříve, níže uvedená tabulka popisuje důležité metody Assert a popis:

S.No. Metoda Description
1. void claimEquals (logická hodnota očekávaná, logická hodnota skutečná) Kontroluje, zda jsou dvě hodnoty rovno podobné metodě se rovná třídy Object
2. void statementFalse (booleovská podmínka) funkcí je zkontrolovat, zda je podmínka nepravdivá.
3. void statementNotNull(objekt objektu) Funkce „assertNotNull“ slouží ke kontrole, zda objekt není null.
4. void statementNull(objekt objektu) Funkce „assertNull“ slouží ke kontrole, zda je objekt null.
5. void statementTrue (booleovská podmínka) Funkce „assertTrue“ slouží ke kontrole, zda je podmínka pravdivá.
6. void fail() Pokud chcete vyvolat jakoukoli chybu aserce, máte fail(), která vždy vede k verdiktu selhání.
7. voidssesSame([řetězcová zpráva] Funkce „assertSame“ slouží ke kontrole, zda dva objekty odkazují na stejný objekt.
8. void claimNotSame([řetězcová zpráva] Funkce „assertNotSame“ slouží ke kontrole, zda dva objekty neodkazují na stejný objekt.

JUnit Třída testovacích případů

Pro spuštění více testů je k dispozici třída TestCase org.junit.TestCase balíčky. @Anotace testu říká JUnit že tuto metodu public void (zde testovací případ), ke které je připojen, lze spustit jako testovací případ.

Níže uvedená tabulka ukazuje některé důležité metody dostupné v org.junit.TestCase třída:

S.No. Metoda Description
1. int countTestCases() Tato metoda se používá k počítání počtu provedených testovacích případů spustit (TestResult tr) metoda.
2. TestResult createResult() Tato metoda se používá k vytvoření a Výsledek testu objekt.
3. Řetězec getName() Tato metoda vrací řetězec, který není nic jiného než a Modelový případ.
4. TestResult run() Tato metoda se používá k provedení testu, který vrací a Výsledek testu objekt
5. neplatný běh (výsledek testu) Tato metoda se používá k provedení testu s a Výsledek testu objekt, který nic nevrací.
6. void setName (název řetězce) Tato metoda se používá k nastavení názvu a Modelový případ.
7. void setUp() Tato metoda se používá k zápisu kódu přidružení prostředků. např. Vytvořit připojení k databázi.
8. void tearDown() Tato metoda se používá k zápisu kódu vydání zdroje. např. Uvolněte připojení k databázi po provedení operace transakce.

JUnit Třída TestResult

Když provedete test, vrátí výsledek (ve formě Výsledek testu objekt). Tento objekt TestResult lze použít k analýze výsledného objektu. Výsledek tohoto testu může být neúspěšný nebo úspěšný.

V níže uvedené tabulce jsou uvedeny důležité metody používané ve třídě org.junit.TestResult:

S.No. Metoda Description
1. void addError(Test test, Throwable t) Tato metoda se používá, pokud požadujete přidat do testu chybu.
2. void addFailure(Test test, AssertionFailedError t) Tato metoda se používá, pokud požadujete přidat selhání do seznamu selhání.
3. void endTest (Test test) Tato metoda se používá k upozornění, že je test proveden (dokončen)
4. int errorCount() Tato metoda se používá k detekci chyby během provádění testu.
5. Výčet chyby() Tato metoda jednoduše vrátí kolekci (zde výčet) chyb.
6. int failureCount() Tato metoda se používá k získání počtu chyb zjištěných během provádění testu.
7. void run (test TestCase) Tato metoda se používá k provedení testovacího případu.
8. int runCount() Tato metoda jednoduše počítá provedený test.
9. void startTest (Test test) Tato metoda se používá k upozornění na spuštění testu.
10. void stop() Tato metoda se používá k zastavení zkušebního běhu.

JUnit Třída testovací sady

Pokud chcete provést více testů v určeném pořadí, lze to provést kombinací všech testů na jednom místě. Toto místo se nazývá testovací apartmá.

V níže uvedené tabulce jsou uvedeny důležité metody používané v org.junit.TestSuite třída:

S.No. Metoda Description
1. void addTest (Test test) Tato metoda se používá, pokud chcete do sady přidat test.
2. void addTestSuite(Class testClass) Tato metoda se používá, pokud chcete specifikovat třídu při přidávání testu do sady.
3. int countTestCases() Tato metoda se používá, pokud chcete spočítat počet testovacích případů.
4. Řetězec getName() Tato metoda se používá k získání názvu testovací sady.
5. neplatný běh (výsledek testu) Tato metoda se používá k provedení testu a shromáždění výsledků testu Výsledek testu objekt.
6. void setName (název řetězce) Tato metoda se používá k nastavení názvu TestSuite.
7. Test testAt(index int) Tato metoda se používá, pokud chcete vrátit test na daném indexu.
8. int testCount() Tato metoda se používá, pokud chcete vrátit několik testů v sadě.
9. varování statického testu (řetězcová zpráva) Tato metoda vrátí test, který se nezdaří, a zaznamená varovnou zprávu.

Shrnutí

  • JUnit poskytuje přenosné API, které poskytuje všechny důležité třídy a Selenium anotace užitečné při psaní jednotkového testu.
  • Třídy, které jsou velmi užitečné při psaní testovacího případu
    • org.junit.Tvrdit
    • org.junit.TestCase
    • org.junit.TestResult
    • org.junit.TestSuite
  • Důležité a často používané JUnit seznam anotací@Before@BeforeClass@After

    @Po hodině

    @Test

    @Ignorovat