JUnit Tesztesetek @Before @BeforeClass Annotation
JUnit a legnรฉpszerลฑbb egysรฉg Tesztelรฉs keret be Java. Kifejezetten ajรกnlott Egysรฉg tesztelรฉse. JUnit nem igรฉnyel szervert a webalkalmazรกs tesztelรฉsรฉhez, ami felgyorsรญtja a tesztelรฉsi folyamatot.
JUnit A keretrendszer lehetลvรฉ teszi a tesztesetek รฉs tesztadatok gyors รฉs egyszerลฑ generรกlรกsรกt is. A org.Junit csomag szรกmos interfรฉszbลl รฉs osztรกlybรณl รกll JUnit Tesztelรฉsek, pรฉldรกul Teszt, Assert, Utรกna, Elลtte stb.
Mi az a tesztkรฉszรผlรฉk
Mielลtt megรฉrtenรฉnk, mi az a tesztberendezรฉs, tanulmรกnyozzuk az alรกbbi kรณdot
Ez a kรณd kรฉt teszteset vรฉgrehajtรกsรกra szolgรกl egy egyszerลฑ fรกjlon.
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();
}
Itt van nรฉhรกny problรฉma
- A kรณd nem olvashatรณ
- A kรณd karbantartรกsa nem egyszerลฑ.
- Ha a tesztcsomag รถsszetett, a kรณd logikai problรฉmรกkat tartalmazhat.
Hasonlรญtsa รถssze ugyanazt a kรณdot 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
}
}
A kรณd sokkal olvashatรณbb รฉs karbantarthatรณ. A fenti kรณdstruktรบra a Tesztberendezรฉs.
A teszteszkรถz olyan kรถrnyezet, ahol a JUnit Teszt eset fut. A tesztberendezรฉsek รกltalรกban a kรถvetkezลket tartalmazzรกk:
- Olyan objektumok vagy erลforrรกsok, amelyek bรกrmely tesztesethez rendelkezรฉsre รกllnak.
- Olyan tevรฉkenysรฉgekre van szรผksรฉg, amelyek elรฉrhetลvรฉ teszik ezeket az objektumokat/erลforrรกsokat.
- Ezek a tevรฉkenysรฉgek
- kiosztรกs (felรฉpรญtรฉs)
- kiosztรกs megszรผntetรฉse (teardown).
Beรกllรญtรกs รฉs lebontรกs
- รltalรกban minden teszteset elลtt el kell vรฉgezni nรฉhรกny ismรฉtelt feladatot. Pรฉlda: adatbรกzis-kapcsolat lรฉtrehozรกsa.
- Hasonlรณkรฉppen, minden teszteset vรฉgรฉn elลfordulhat nรฉhรกny ismรฉtlลdล feladat. Pรฉlda: a teszt vรฉgrehajtรกsa utรกn megtisztรญtani.
- JUnit megjegyzรฉseket tartalmaz, amelyek segรญtenek a beรกllรญtรกsban รฉs a lebontรกsban. Ez biztosรญtja, hogy az erลforrรกsok felszabaduljanak, รฉs a tesztrendszer kรฉszen รกlljon a kรถvetkezล tesztesetre.
Ezek JUnit az annotรกciรณkat alรกbb tรกrgyaljuk -
felรฉpรญtรฉs
@Elลtt megjegyzรฉs be JUnit tartalmazรณ mรณdszeren hasznรกljรกk Java kรณdot minden teszteset elลtt le kell futtatni. azaz minden tesztvรฉgrehajtรกs elลtt lefut.
Lebontรกs (az รญtรฉlettลl fรผggetlenรผl)
@Utรกn az annotรกciรณt egy Java kรณdot tartalmazรณ metรณduson hasznรกljรกk, amely minden teszteset utรกn fut. Ezek a metรณdusok akkor is futnak, ha a tesztesetben kivรฉtelek vannak, vagy az รกllรญtรกs sikertelensรฉge esetรฉn.
Jegyzet:
- A fent felsorolt โโmegjegyzรฉsek szรกma tetszลleges.
- Az รถsszes metรณdus, amely a kรถvetkezลvel van ellรกtva @Elลtt in JUnit minden teszteset elลtt futnak, de bรกrmilyen sorrendben futhatnak.
- A @Before รฉs @After metรณdusokat รถrรถkรถlheti egy szuperosztรกlybรณl, a vรฉgrehajtรกs a kรถvetkezล: Ez egy szabvรกnyos vรฉgrehajtรกsi folyamat JUnit.
- Vรฉgezze el a JUnit @Before metรณdusok a szuperosztรกlyban
- Hajtsa vรฉgre a @Before metรณdusokat ebben az osztรกlyban
- Vรฉgezzen el egy @Test metรณdust ebben az osztรกlyban
- Hajtsa vรฉgre az @After metรณdusokat ebben az osztรกlyban
- Hajtsa vรฉgre a @After metรณdusokat a szuperosztรกlyban
Pรฉlda: Osztรกly lรฉtrehozรกsa teszteszkรถzkรฉnt fรกjllal
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
}
}
A fenti pรฉldรกban a vรฉgrehajtรกsi lรกnc a kรถvetkezล lesz:
- createOutputFile()
- tesztfรกjl1()
- deleteOutputFile()
- createOutputFile()
- tesztfรกjl2()
- deleteOutputFile()
Feltevรฉs:
A testFile1() a testFile2() elลtt fut โ ami nem garantรกlt.
Egyszeri beรกllรญtรกs
- Egy mรณdszer csak egyszer futhat le a teljes tesztosztรกlyban, mielลtt bรกrmelyik tesztet vรฉgrehajtanรก, รฉs bรกrmely @Elลtt mรณd).
- Az โegyszeri beรกllรญtรกsโ hasznos a szerverek indรญtรกsรกhoz, a kommunikรกciรณ megnyitรกsรกhoz stb. Idลigรฉnyes az erลforrรกsok bezรกrรกsa รฉs รบjbรณli megnyitรกsa minden teszthez.
- Ezt a megjegyzรฉs segรญtsรฉgรฉvel lehet megtenni @รra elลtt in JUnit.
@BeforeClass public static void Method_Name() {
// class setup code here
}
Csak egyszer bontsa le
- Az egyszeri beรกllรญtรกshoz hasonlรณan egy egyszeri tisztรญtรกsi mรณdszer is rendelkezรฉsre รกll. Minden teszteset mรณdszer utรกn fut รฉs @Utรกn a megjegyzรฉsek vรฉgrehajtรกsra kerรผltek.
- It is useful for stopping servers, closing communication links, etc.
- Ezt a @รra utรกn kommentรกr
@AfterClass public static void Method_Name()
{
// class cleanup code here
}
JUnit Teszt lakosztรกlyok
Ha tรถbb tesztet szeretnรฉnk vรฉgrehajtani meghatรกrozott sorrendben, akkor azt รบgy is megtehetjรผk, hogy az รถsszes tesztet egy helyen kombinรกljuk. Ezt a helyet tesztlakosztรกlynak hรญvjรกk. Tovรกbbi rรฉszletek a tesztcsomagok vรฉgrehajtรกsรกrรณl รฉs felhasznรกlรกsรกrรณl JUnit ebben lesz kitรฉrve oktatรณi.
Junit tesztfutรณ
JUnit eszkรถzt biztosรญt a tesztesetek vรฉgrehajtรกsรกhoz.
- JUnitMag osztรกlyt hasznรกljรกk ezeknek a teszteknek a vรฉgrehajtรกsรกra.
- Az รบgynevezett mรณdszer runClasses รกltal biztosรญtott org.junit.runner.JUnitMag, egy vagy tรถbb tesztosztรกly futtatรกsรกra szolgรกl.
- Ennek a mรณdszernek a visszatรฉrรฉsi tรญpusa a Eredmรฉny tรกrgy (org.junit.runner.Result), amely a tesztekkel kapcsolatos informรกciรณk elรฉrรฉsรฉre szolgรกl. Lรกsd a kรถvetkezล kรณdpรฉldรกt az รฉrthetลsรฉg kedvรฉรฉrt.
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());
}
}
A fenti kรณdban az โeredmรฉnyโ objektumot dolgozzuk fel, hogy megkapjuk a vรฉgrehajtott tesztesetek hibรกit รฉs sikeres eredmรฉnyeit.
vezetรฉknรฉv JUnit program
Az SDLC, a java programozรกs รฉs az alapismeretek megfelelล ismerete szoftver tesztelรฉs folyamat segรญt megรฉrteni JUnit program.
Ismerjรผk meg az egysรฉgtesztelรฉst egy รฉlล pรฉlda segรญtsรฉgรฉvel. Lรฉtre kell hoznunk egy tesztosztรกlyt egy tesztmรณdszerrel @Teszt az alรกbbiak szerint:
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
A fenti tesztmรณdszerรผnk vรฉgrehajtรกsรกhoz lรฉtre kell hoznunk egy tesztfutรณt. A tesztfutรณban paramรฉterkรฉnt fel kell adnunk tesztosztรกlyt JUnitA Core runclasses() metรณdusa . Visszaadja a teszt eredmรฉnyรฉt, attรณl fรผggลen, hogy a teszt sikeres vagy sikertelen.
Tovรกbbi rรฉszletekรฉrt tekintse meg az alรกbbi kรณdot:
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());
}
}
teljesรญtmรฉny
Egyszer TestRunner.java vรฉgrehajtja a tesztmรณdszereinket, a kimenetet sikertelenkรฉnt vagy sikereskรฉnt kapjuk meg. Az alรกbbi kimenet magyarรกzatรกt talรกlja:
- Ebben a pรฉldรกban a vรฉgrehajtรกs utรกn MyFirstClassTest.java , a teszt sikeres, รฉs az eredmรฉny zรถld szรญnลฑ.
- If it would have failed it should have shown the result as Red and failure can be observed in failure trace. See below JUnit gui :
รsszegzรฉskรฉnt
- JUnit egy olyan keretrendszer, amely szรกmos megjegyzรฉst tรกmogat a tesztet tartalmazรณ mรณdszer azonosรญtรกsรกhoz.
- JUnit nevลฑ annotรกciรณt biztosรญt @Teszt, amely megmondja a JUnit hogy a hasznรกlt public void metรณdus tesztesetkรฉnt futhat.
- A teszteszkรถz egy olyan kรถrnyezet, ahol egy teszteset fut
- Ha egy meghatรกrozott sorrendben tรถbb tesztet szeretne vรฉgrehajtani, akkor az รถsszes tesztet egy helyen kombinรกlja. Ezt a helyet tesztlakosztรกlynak hรญvjรกk.
- JUnit eszkรถzt biztosรญt a tesztek vรฉgrehajtรกsรกhoz, ahol a Test Runner nรฉven emlegetett teszteseteinket futtathatjuk.


