Testovací případy JUnit @Before @BeforeClass Anotace

Obsah:

Anonim

JUnit je nejpopulárnější platforma pro testování jednotek v Javě. Je výslovně doporučeno pro testování jednotek. JUnit nevyžaduje server pro testování webových aplikací, což zrychluje proces testování.

Rámec JUnit také umožňuje rychlé a snadné generování testovacích případů a testovacích dat. Balíček org.Junit se skládá z mnoha rozhraní a tříd pro testování JUnit, jako je Test, Assert, After, Before atd.

Co je Testovací přípravek

Než pochopíme, co je to testovací přípravek, prostudujme si níže uvedený kód

Tento kód je navržen k provedení dvou testovacích případů na jednoduchém souboru.

veřejná třída OutputFileTest {výstup soukromého souboru;výstup = nový soubor (…);output.delete ();public void testFile1 () {// Kód pro ověření testovacího případu 1}output.delete ();výstup = nový soubor (…);public void testFile2 () {// Kód pro ověření Testovacího případu 2}output.delete ();}

Několik problémů zde

  • Kód není čitelný
  • Údržba kódu není snadná.
  • Když je testovací sada složitá, kód může obsahovat logické problémy.

Stejný kód porovnejte pomocí JUnit

veřejná třída OutputFileTest{výstup soukromého souboru;@ Před public void createOutputFile (){výstup = nový soubor (…);}@ Po veřejné neplatnosti deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// kód pro objekt testovacího případu}@Test public void testFile2 (){// kód pro objekt testovacího případu}}

Kód je mnohem čitelnější a udržovatelnější. Výše uvedená struktura kódu je testovacím zařízením.

Testovací přípravek je kontext, ve kterém běží testovací případ. Typicky testovací přípravky zahrnují:

  • Objekty nebo prostředky, které jsou k dispozici pro jakýkoli testovací případ.
  • Vyžadují se činnosti, které zpřístupní tyto objekty / prostředky.
  • Tyto činnosti jsou
    1. alokace ( nastavení )
    2. zrušení přidělení ( odtržení ).

Nastavení a Teardown

  • Před každým testovacím případem je obvykle nutné provést několik opakovaných úkolů. Příklad: vytvořit připojení k databázi.
  • Stejně tak na konci každého testovacího případu mohou být některé opakované úkoly. Příklad: vyčistit, jakmile skončí provádění testu.
  • JUnit poskytuje anotace, které pomáhají při nastavení a demontáži. Zajišťuje uvolnění prostředků a testovací systém je připraven pro další testovací případ.

Tyto anotace jsou popsány níže -

Založit

@Before anotace se používá u metody obsahující kód Java ke spuštění před každým testovacím případem. tj. běží před každým provedením testu.

Teardown (bez ohledu na verdikt)

@ Po anotaci se používá u metody obsahující kód Java ke spuštění po každém testovacím případu. Tyto metody se spustí, i když jsou v testovacím případě nebo v případě selhání tvrzení vyvolány jakékoli výjimky.

Poznámka:

  • Je povoleno mít libovolný počet anotací uvedených výše.
  • Všechny metody anotované pomocí @Before budou spuštěny před každým testovacím případem, ale mohou běžet v jakémkoli pořadí.
  • Metody @Before a @After můžete zdědit ze super třídy, provedení je následující: Jedná se o standardní proces provádění v JUnit.
  1. Proveďte metody @Before v nadtřídě
  2. Proveďte metody @Before v této třídě
  3. Provedení metody @Test v této třídě
  4. Proveďte metody @After v této třídě
  5. Proveďte metody @After v nadtřídě

Příklad: Vytvoření třídy se souborem jako testovacím přípravkem

veřejná třída OutputFileTest{výstup soukromého souboru;@ Před public void createOutputFile (){výstup = nový soubor (…);}@ Po veřejné neplatnosti deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// kód pro objekt testovacího případu}@Test public void testFile2 (){// kód pro objekt testovacího případu}}

Ve výše uvedeném příkladu bude řetězec provádění následující -

  1. createOutputFile ()
  2. testFile1 ()
  3. deleteOutputFile ()
  4. createOutputFile ()
  5. testFile2 ()
  6. deleteOutputFile ()

Předpoklad: testFile1 () běží před testFile2 () - což není zaručeno.

Nastavení pouze jednou

  • Je možné spustit metodu pouze jednou pro celou třídu testu před provedením některého z testů a před jakoukoli metodou @Before .
  • „Pouze nastavení“ je užitečné pro spouštění serverů, otevírání komunikace atd. Zavírat a znovu otevírat zdroje pro každý test je časově náročné.
  • To lze provést pomocí poznámky @BeforeClass
@BeforeClass public static void Method_Name () {// kód pro nastavení třídy zde}

Pouze jednou strhnout

  • Podobně jako u nastavení pouze jednou je k dispozici také metoda čištění pouze jednou. Spustí se po provedení všech metod testovacích případů a @After anotací.
  • Je to užitečné pro zastavení serverů, uzavření komunikačních odkazů atd.
  • To lze provést pomocí poznámky @AfterClass
@AfterClass public static void Method_Name (){// kód pro vyčištění třídy zde}

JUnit Test Suites

Pokud chceme 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í sady. Více podrobností o tom, jak provádět testovací sady a jak se používá v JUnit, bude popsáno v tomto kurzu.

Testovací běžec Junit

JUnit poskytuje nástroj pro provádění testovacích případů.

  • K provedení těchto testů se používá třída JUnitCore .
  • Ke spuštění jedné nebo několika testovacích tříd se používá metoda s názvem runClasses poskytovaná org.junit.runner.JUnitCore .
  • Návratovým typem této metody je Result objekt ( org.junit.runner.Result ), který se používá pro přístup k informacím o testech. Pro větší přehlednost viz následující příklad kódu.
test veřejné třídy {public static void main (String [] args) {Výsledek = JUnitCore.runClasses (CreateAndSetName.class);pro (Selhání selhání: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println (result.wasSuccessful ());}}

Ve výše uvedeném kódu je objekt „výsledek“ zpracován, aby získal chyby a úspěšné výsledky testovacích případů, které provádíme.

První program JUnit

Spravedlivá znalost SDLC, programování v jazyce Java a základy procesu testování softwaru pomáhá porozumět programu JUnit.

Pojďme pochopit testování jednotek pomocí živého příkladu. Musíme vytvořit testovací třídu s testovací metodou anotovanou pomocí @Test, jak je uvedeno níže:

MyFirstClassTest.java

balíček guru99.JUnit;import statické org.JUnit.Assert. *;import org.JUnit.Test;veřejná třída MyFirstClassTest {@Testpublic void myFirstMethod () {String str = "JUnit funguje dobře";assertEquals ("JUnit funguje dobře", str);}}

TestRunner.java

Abychom provedli naši testovací metodu (výše), musíme vytvořit testovacího běžce. V testovacím běžeči musíme přidat testovací třídu jako parametr v metodě runclasses () JUnitCore. Vrátí výsledek testu na základě toho, zda je test úspěšný nebo neúspěšný.

Další podrobnosti naleznete v níže uvedeném kódu:

balíček guru99.JUnit;import org.JUnit.runner.JUnitCore;import org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;veřejná třída TestRunner {public static void main (String [] args) {Výsledek = JUnitCore.runClasses (MyFirstClassTest.class);pro (Selhání selhání: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Result ==" + result.wasSuccessful ());}}

Výstup

Jakmile TestRunner.java provede naše testovací metody, dostaneme výstup jako neúspěšný nebo úspěšný . Níže naleznete vysvětlení výstupu:

  1. V tomto příkladu je po provedení MyFirstClassTest.java předán test a výsledek je zelený.
  2. Pokud by selhalo, mělo by se zobrazit výsledek jako červená a selhání lze pozorovat ve stopě selhání. Viz níže JUnit gui:

Shrnutí :

  • JUnit je rámec, který podporuje několik anotací k identifikaci metody, která obsahuje test.
  • JUnit poskytuje anotaci nazvanou @Test, která říká JUnit, že metoda veřejného void, ve které se používá, může běžet jako testovací případ.
  • Testovací přípravek je kontext, ve kterém běží testovací případ
  • Chcete-li 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í sady.
  • JUnit poskytuje nástroj pro provádění testů, kde můžeme spustit naše testovací případy označované jako Test Runner.