JUnit Testovací případy @Before @BeforeClass Anotace
JUnit je nejoblíbenější jednotkou Testování rámec v Java. Výslovně se doporučuje pro Testování jednotek. JUnit nevyžaduje server pro testování webové aplikace, což zrychluje proces testování.
JUnit framework také umožňuje rychlé a snadné generování testovacích případů a testovacích dat. The org.Junit balíček se skládá z mnoha rozhraní a tříd pro JUnit Testování jako Test, Assert, After, Before atd.
Co je testovací přípravek
Než pochopíme, co je testovací přípravek, prostudujeme si níže uvedený kód
Tento kód je navržen tak, aby provedl dva testovací případy na jednoduchém souboru.
public class OutputFileTest {
private File output;
output = new File(...);
output.delete();
public void testFile1(){
//Code to verify Test Case 1
}
output.delete();
output = new File(...);
public void testFile2(){
//Code to verify Test Case 2
}
output.delete();
}
Zde je několik problémů
- Kód není čitelný
- Kód není snadné udržovat.
- Když je testovací sada složitá, může kód obsahovat logické problémy.
Porovnejte stejný kód pomocí JUnit
public class OutputFileTest
{
private File output;
@Before public void createOutputFile()
{
output = new File(...);
}
@After public void deleteOutputFile()
{
output.delete();
}
@Test public void testFile1()
{
// code for test case objective
}
@Test public void testFile2()
{
// code for test case objective
}
}
Kód je mnohem čitelnější a udržitelnější. Výše uvedená struktura kódu je a Testovací přípravek.
Testovací přípravek je kontext, kde a JUnit Testovací případ běží. Testovací přípravky obvykle zahrnují:
- Objekty nebo prostředky, které jsou dostupné pro jakýkoli testovací případ.
- Požadované činnosti, které tyto objekty/zdroje zpřístupní.
- Tyto činnosti jsou
- přidělení (Nastavení)
- de-alokace (teardown).
Nastavení a odstranění
- Obvykle se před každým testovacím případem musí 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: po dokončení testu vyčistit.
- JUnit poskytuje anotace, které pomáhají při nastavení a demontáži. Zajišťuje uvolnění prostředků a testovací systém je ve stavu připravenosti pro další testovací případ.
Tyto JUnit anotace jsou diskutovány níže -
Nastavení
@Před anotace v JUnit se používá u metody obsahující Java kód, který se má spustit 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 anotace se používá u metody obsahující kód java, který se má spustit po každém testovacím případě. Tyto metody poběží, i když jsou v testovacím případě vyvolány jakékoli výjimky nebo v případě selhání aserce.
Poznámka:
- Je povoleno mít libovolný počet výše uvedených anotací.
- Všechny anotované metody @Před in JUnit budou spuštěny před každým testovacím případem, ale mohou se spustit v libovolném pořadí.
- Můžete zdědit metody @Before a @After z nadtřídy, Execution je následující: Je to standardní proces provádění v JUnit.
- Spustit JUnit @Before metody v nadtřídě
- Proveďte metody @Before v této třídě
- V této třídě spusťte metodu @Test
- Spusťte metody @After v této třídě
- Spusťte metody @After v nadtřídě
Příklad: Vytvoření třídy se souborem jako testovacím přípravkem
public class OutputFileTest
{
private File output;
@Before public void createOutputFile()
{
output = new File(...);
}
@After public void deleteOutputFile()
{
output.delete();
}
@Test public void testFile1()
{
// code for test case objective
}
@Test public void testFile2()
{
// code for test case objective
}
}
Ve výše uvedeném příkladu bude řetězec provádění následující -
- createOutputFile()
- testFile1()
- deleteOutputFile()
- createOutputFile()
- testFile2()
- 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 kteréhokoli z testů a před jakýmkoliv testem @Před metody).
- Nastavení „Pouze jednou“ je užitečné pro spouštění serverů, otevírání komunikace atd. Zavírání a opětovné otevírání zdrojů pro každý test je časově náročné.
- To lze provést pomocí anotace @Před hodinou in JUnit.
@BeforeClass public static void Method_Name() {
// class setup code here
}
Pouze jednou zbourat
- Podobně jako u jednorázového nastavení je k dispozici také metoda jednorázového čištění. Spouští se po všech metodách testovacího případu a @Po anotace byly provedeny.
- Je to užitečné pro zastavení serverů, uzavření komunikačních spojení atd.
- To lze provést pomocí @Po hodině Anotace
@AfterClass public static void Method_Name()
{
// class cleanup code here
}
JUnit Testovací sady
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í apartmá. Další podrobnosti o tom, jak spouštět testovací sady a jak se používají v JUnit bude v tomto zahrnuto konzultace.
Junit Test Runner
JUnit poskytuje nástroj pro provádění vašich testovacích případů.
- JUnitJádro třída se používá k provádění těchto testů.
- Metoda tzv runClasses poskytované org.junit.runner.JUnitJádro, se používá ke spuštění jedné nebo několika testovacích tříd.
- Návratový typ této metody je Výsledek 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.
public class Test {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(CreateAndSetName.class);
for (Failure failure : 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 tak, aby získal selhání a úspěšné výsledky testovacích případů, které provádíme.
Jméno JUnit program
Dobrá znalost SDLC, programování Java a základy testování softwaru proces pomáhá pochopit JUnit program.
Pojďme pochopit Unit Testing pomocí živého příkladu. Potřebujeme vytvořit testovací třídu s testovací metodou anotovanou @Test jak je uvedeno níže:
MyFirstClassTest.java
package guru99.JUnit;
import static org.JUnit.Assert.*;
import org.JUnit.Test;
public class MyFirstClassTest {
@Test
public void myFirstMethod(){
String str= "JUnit is working fine";
assertEquals("JUnit is working fine",str);
}
}
TestRunner.java
K provedení naší testovací metody (výše) musíme vytvořit testovací běh. V testovacím běhu musíme přidat třídu testu jako parametr JUnitCore metoda runclasses() . Vrátí výsledek testu na základě toho, zda byl test úspěšný nebo neúspěšný.
Další podrobnosti o tomto naleznete v kódu níže:
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(MyFirstClassTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println("Result=="+result.wasSuccessful());
}
}
Výstup
Jednou TestRunner.java provede naše testovací metody, dostaneme výstup jako neúspěšný nebo úspěšný. Níže naleznete vysvětlení výstupu:
- V tomto příkladu po provedení MyFirstClassTest.java , test je úspěšný a výsledek je zelený.
- Pokud by selhal, měl by výsledek zobrazit 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 tzv @Test, který říká JUnit že metoda public 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í apartmá.
- JUnit poskytuje nástroj pro provádění testů, kde můžeme spouštět naše testovací případy označované jako Test Runner.


