JUnit.

Hasonló dokumentumok
JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része.

Sikeres végrehajtás(pass): ez azt jelenti, hogy a teszt rendben lefutott, és az ellenőrzési feltételek mind teljesültek.

public class HelloWorld extends TestCase { public void testmultiplication() { // Testing if 3*2=6: assertequals ("Multiplication", 6, 3*2);

Szűgyi Zalán. Unit tesztek Java és C++ környezetben

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

BME Irányítástechnika és Informatika Tanszék A programozás alapjai

Programozási technológia 2.

Concurrency in Swing

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

A JUnit alapú egységteszteléshez felhasználandó annotációk leírásait az alábbi URL-en találja meg:

Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Tesztelés és profiling

Programozási nyelvek Java

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Szoftvertechnológia alapjai Java előadások

Modern unit és integrációs tesztelés

Szoftverminőségbiztosítás

Szoftvertechnológia 10. előadás. Verifikáció és validáció. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Osztályok. 4. gyakorlat

Programozási nyelvek Java

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

A feladatok megoldásához felhasználandó annotációk leírásait az alábbi URL-en találja meg:

Programozási technológia II 7. előadás. Verifikáció és validáció Giachetta Roberto

Java és web programozás

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

ELTE, Informatikai Kar december 12.

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

OOP #14 (referencia-elv)

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Segédanyag: Java alkalmazások gyakorlat

C#, OOP. Osztályok tervezése C#-ban

C++ programozási nyelv Konstruktorok-destruktorok

Programozási nyelvek II. JAVA

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Programozási nyelvek II.: JAVA

Programozási nyelvek II. JAVA

Szoftvertesztelés Alapok

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Programozási nyelvek II.: JAVA

Java IX. telkezelés a Java-ban

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Java IX. telkezelés a Java-ban

Objektumorientált programozás C# nyelven

Név: Neptun kód: Pontszám:

JAVA PROGRAMOZÁS 3.ELŐADÁS

OOP: Java 8.Gy: Abstract osztályok, interfészek

Programozási nyelvek Java

Segédanyag: Java alkalmazások gyakorlat

Unit tesztelés. Honfi Dávid, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

1. Egyszerű (primitív) típusok. 2. Referencia típusok

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

3. Osztályok II. Programozás II

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

A C# programozási nyelv alapjai

Programozási nyelvek II.: JAVA

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java II. I A Java programozási nyelv alapelemei

S z á m í t ó g é p e s a l a p i s m e r e t e k

Kivételek, kivételkezelés a C++ nyelvben

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Java programozási nyelv 5. rész Osztályok III.

Programozás I. gyakorlat

Szoftverminőségbiztosítás

Magas szintű programozási nyelvek 2 Előadás jegyzet

Java. JIT (Just in Time) fordítók alkalmazása, optimalizálás AOT (Ahead of Time) fordítók alkalmazásának lehetősége

Web-technológia PHP-vel

Programozási nyelvek II.: JAVA, 4. gyakorlat

Modellek ellenőrzése és tesztelése

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Java programozási nyelv 9. rész Kivételkezelés

V & V Feladatok. V & V Feladatok

TESZTELÉS A SZOFTVER ÉLETCIKLUSÁN ÁT TESZTSZINTEK

Automatikus tesztgenerálás modell ellenőrző segítségével

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

OOP. Alapelvek Elek Tibor

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

és az instanceof operátor

A Java EE 5 plattform

JAVA PROGRAMOZÁS 2.ELŐADÁS

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Programozási nyelvek Java

Unit tesztelés. Honfi Dávid, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Függőség injekció Konstantinusz Kft 2010

Programozási nyelvek II. JAVA

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

Programozás I. Első ZH segédlet

Objektumorientált programozás C# nyelven

Átírás:

JUnit http://junit.org/

JUnit Egységtesztelő keretrendszer Javához Szerzők: Kent Beck és Erich Gamma Alapötlet: Ha a teszteket könnyű létrehozni és lefuttatni, akkor a programozók jobban hajlanak majd arra, hogy teszteket hozzanak létre és futtassanak le.

Fogalmak Tesztelendő egység (unit/class under test) Tesztkörnyezet (test fixture/environment) Programállapot: olyan objektumok/változók összessége, amelyeket számos teszteset használ Tesztek Teszteset (test case): egy művelet végrehajtása, és eredményének ellenőrzése (összevetése az elvárt eredménnyel) Tesztkészlet (test suite): tesztesetek gyűjteménye Tesztvégrehajtás A JUnit automatikusan végrehajtja a megjelölt teszteseteket, és tesztjelentést készít a sikerességről

Tesztesetek döntései (verdiktek) Egy verdikt egyetlen teszt végrehajtásának meghatározott eredménye. Átment (pass): a teszteset elérte kijelölt célját, a tesztelt szoftver pedig a vártnak megfelelően viselkedett. Megbukott (fail): a teszteset elérte kijelölt célját, de a szoftver nem a vártnak megfelelően viselkedett. Hiba (error): a teszteset nem érte el kijelölt célját. Ennek lehetséges okai: A teszteset során egy nem várt esemény következett be. A tesztesetet nem lehetett megfelelően beállítani.

Egy JUnit teszt Tesztosztályba szervezett metódusok összessége A tesztelendő osztály objektumait létrehozva műveleteket végez rajtuk, majd ellenőrzi, hogy a működés az elvárásoknak megfelelő-e Állításokat fogalmazunk meg Két objektum vagy skalár érték egyenlő vagy nem egyenlő Két objektumreferencia egyenlő vagy nem egyenlő Egy objektumreferencia null vagy nem null Két tömb megegyezik vagy sem Egy adott logikai feltétel teljesül-e vagy sem Ezek alapján határozzuk meg a verdiktet

JUnit verziók JUnit 3: http://junit.sourceforge.net/junit3.8.1/ junit.framework csomag Bármilyen Java verzióval használható Minden teszteset a TestCase osztály leszármazottjaként hozható csak létre Minden tesztmetódus nevének test-tel kell kezdődnie setup, teardown JUnit 4: 2006 áprilisa óta, http://junit.org/ org.junit csomag Jelentős változások (nem kompatibilis az előzőekkel) Java 5 vagy magasabb Annotációkon alapszik Csak ezzel foglalkozunk

Mikor alkalmazzuk a JUnit-ot? Kis mennyiségű kód egységteszteléséhez (unit test) Önmagában nem elegendő komplex teszteléshez, integrációs vagy rendszerteszteléshez Tesztvezérelt fejlesztés (test-driven development): előbb (még a kód előtt) készítjük el a teszt kódját, és lefuttatjuk Ezután kell megírni az implementációs kódot, ami nem lesz más, mint a minimális kód, ami átmegy a teszten semmi egyéb funkcionalitás. Ha megírtuk a kódot, futtassuk le a tesztet újra, és át kell mennie. Valahányszor új kódot adunk hozzá, futtassuk le újra az összes tesztet, így megbizonyosodva róla, hogy semmi nem romlott el. Red -> Green -> Refactor

JUnit 4 tesztesetek /* A MyClass osztály multiply metódusának tesztje */ @Test public void multiplicationofzeroshouldreturnzero() { MyClass tester = new MyClass( ); assertequals("10 x 0 must be 0", 0, tester.multiply(10, 0)); assertequals("0 x 10 must be 0", 0, tester.multiply(0, 10)); assertequals("0 x 0 must be 0", 0, tester.multiply(0, 0)); @Test public void multiplicationofoneshouldreturnitself() { MyClass tester = new MyClass( ); assertequals("18 x 1 must be 18", 18, tester.multiply(18, 1)); assertequals("1 x -10 must be 0", -10, tester.multiply(1, -10)); assertequals("0 x 1 must be 0", 0, tester.multiply(0, 1)); assertequals("1 x 1 must be 1", 1, tester.multiply(1, 1));

JUnit 4 tesztesetek /* A MyClass osztály multiply metódusának tesztje */ @Test public void multiplicationofzeroshouldreturnzero() { MyClass tester = new MyClass( ); assertequals("10 x 0 must be 0", 0, tester.multiply(10, 0)); assertequals("0 x 10 must be 0", 0, tester.multiply(0, 10)); assertequals("0 x 0 must be 0", 0, tester.multiply(0, 0)); @Test public void multiplicationofoneshouldreturnitself() { MyClass tester = new MyClass( ); Jelzi a tesztfuttató számára, hogy ez a Java metódus egy teszteset assertequals("18 x 1 must be 18", 18, tester.multiply(18, 1)); assertequals("1 x -10 must be 0", -10, tester.multiply(1, -10)); assertequals("0 x 1 must be 0", 0, tester.multiply(0, 1)); assertequals("1 x 1 must be 1", 1, tester.multiply(1, 1));

JUnit 4 tesztesetek /* A MyClass osztály multiply metódusának tesztje */ @Test public void multiplicationofzeroshouldreturnzero() { MyClass tester = new MyClass( ); assertequals("10 x 0 must be 0", 0, tester.multiply(10, 0)); assertequals("0 x 10 must be 0", 0, tester.multiply(0, 10)); assertequals("0 x 0 must be 0", 0, tester.multiply(0, 0)); @Test public void multiplicationofoneshouldreturnitself() { MyClass tester = new MyClass( ); Célkitűzés: Bizonyosodjunk meg, hogy a multiply hívás eredménye az elvárt lesz assertequals("18 x 1 must be 18", 18, tester.multiply(18, 1)); assertequals("1 x -10 must be 0", -10, tester.multiply(1, -10)); assertequals("0 x 1 must be 0", 0, tester.multiply(0, 1)); assertequals("1 x 1 must be 1", 1, tester.multiply(1, 1));

JUnit 4 tesztesetek /* A MyClass osztály multiply metódusának tesztje */ @Test public void multiplicationofzeroshouldreturnzero() { MyClass tester = new MyClass( ); assertequals("10 x 0 must be 0", 0, tester.multiply(10, 0)); assertequals("0 x 10 must be 0", 0, tester.multiply(0, 10)); assertequals("0 x 0 must be 0", 0, tester.multiply(0, 0)); @Test public void multiplicationofoneshouldreturnitself() { MyClass tester = new MyClass( ); Elvárásunkat állítás formájában fogalmazzuk meg: azt várjuk, hogy az elvárt eredmény megegyezik a ténylegesen kapottal assertequals("18 x 1 must be 18", 18, tester.multiply(18, 1)); assertequals("1 x -10 must be 0", -10, tester.multiply(1, -10)); assertequals("0 x 1 must be 0", 0, tester.multiply(0, 1)); assertequals("1 x 1 must be 1", 1, tester.multiply(1, 1));

Állítások A teszteseteinkben használható állításokat az Assert osztály definiálja Ha egy állítás igaz, folytatódik a metódus végrehajtása. Ha bármely állítás hamis, a metódus végrehajtása megszakad azon a ponton, és a teszteset eredménye megbukott (fail) lesz. Ha bármilyen más kivétel dobódik a metódus végrehajtása során, a teszteset eredménye hiba (error) lesz. Ha egyetlen állítás sem sérül az egész metódusban, akkor a teszteset átmegy (pass). Minden Assert metódus statikus.

Assert metódusok A boolean típusú feltételek értéke igaz vagy hamis asserttrue(condition) assertfalse(condition) Az objektumok értéke null vagy nem null assertnull(object) assertnotnull(object) Az objektumok egyformák (azaz két hivatkozás ugyanarra az objektumra) vagy nem egyformák. assertsame(expected, actual) Igaz ha: expected == actual assertnotsame(expected, actual)

Assert metódusok Objektumok egyenlősége : assertequals(expected, actual) Igaz ha: expected.equals(actual) Tömbök egyenlősége : assertarrayequals(expected, actual) A tömbök hossza meg kell, hogy egyezzen Minden létező i értékre megfelelően ellenőrizzük a következőt: assertequals(expected[i],actual[i]) vagy assertarrayequals(expected[i],actual[i]) Létezik egy feltétel nélküli bukás állítás is, a fail(), ami mindig bukás verdiktet eredményez.

Hamcrest A JUnit keretrendszerbe integrált keretrendszer Céljai: Könnyebben olvasható feltételek (fluent API) Syntactic sugar static <T> void assertthat(t actual, Matcher<T> matcher) assertthat(bank.getname(), either(containsstring("cib")).or(containsstring("bank"))); További információk: https://github.com/junit-team/junit/wiki/matchers-and-assertthat http://hamcrest.org/javahamcrest/ http://www.jtechlog.hu/2014/05/26/hamcrest.html

Assert metódusok paraméterei Konvenció: a kétparaméteres metódusok esetén az első paraméter a várt érték, a második pedig a valós (tényleges) érték. Ez nincs hatással a hasonlításra, de ezt a sorrendet feltételezzük a felhasználónak szóló hibaüzenet létrehozásakor. Minden Assert metódusnak lehet egy további String paramétere, első paraméterként. Ez a sztring bekerül a hibaüzenetbe, ha az állítás megbukik. Példák: fail(message) assertequals(message, expected, actual)

Egyenlőségi állítások Az assertequals(a,b) a tesztelendő osztály equals() metódusára hagyatkozik. A hatása a a.equals(b) kifejezés kiértékelése. A tesztelendő osztályra van bízva, hogy megfelelő egyenlőségi relációt definiáljon. A JUnit azt használja, ami rendelkezésre áll. Bármely olyan osztály esetén, amely nem definiálja felül az Object osztály equals() metódusát, az alapértelmezett equals() viselkedés érvényesül az objektumok azonossága. Ha a és b típusa egy olyan primitív típus, mint pl. az int vagy a boolean, akkor az assertequals(a,b)-nél a következő történik: a és b az ekvivalens objektumtípusra (csomagolóosztály) konvertálódik (Integer, Boolean, stb.), majd kiértékelődik az a.equals(b) kifejezés.

Lebegőpontos állítások Lebegőpontos típusok (double vagy float) hasonlításánál egy további, delta paraméterre is szükség van. Az állítás a Math.abs(expected actual) <= delta kifejezést értékeli ki, hogy kiküszöbölje a lebegőpontos hasonlításoknál a kerekítési hibák okozta problémákat. Példa: assertequals(adouble, anotherdouble, 0.0001)

A JUnit tesztek szervezése Minden metódus egyetlen tesztesetet reprezentál, melynek önálló verdiktje van (átment, hiba, megbukott). Normális esetben minden, egy Java osztályhoz tartozó teszt egy, különálló osztályba van csoportosítva. Elnevezési konvenció: A tesztelendő osztály: MyClass A teszteket tartalmazó osztály: MyClassTest

JUnit tesztek futtatása (1) A JUnit keretrendszer nem biztosít grafikus tesztfuttatót. Ehelyett biztosít egy API-t, amit az IDE-k használhatnak tesztesetek futtatásához, és egy szöveges futtatót, amit használhatunk a parancssorból. Az Eclipse és a Netbeans is biztosít a környezetükbe integrált grafikus tesztfuttatót.

JUnit tesztek futtatása (2) A JUnit által biztosított futtatóval: Amikor kiválasztunk egy osztályt végrehajtásra, az osztály összes tesztesetmetódusa futtatásra kerül. A sorrend, amelyben a metódusok meghívásra kerülnek (azaz a tesztesetek végrehajtásának sorrendje), nem megjósolható. Az IDE-k tesztfuttatói lehetőséget biztosíthatnak a felhasználónak arra, hogy kiválasszon bizonyos metódusokat, vagy hogy meghatározza a végrehajtás sorrendjét. Sőt, a 4.11 verzó óta a @FixMethodOrder annotációval (paraméterei a MethodSorters enum elemei lehetnek: DEFAULT, JVM vagy NAME_ASCENDING) is megadható Ökölszabály: olyan teszteket írjunk, amelyek függetlenek a futtatási sorrendtől és bármely korábbi teszt(ek) állapotától.

Tesztek környezete (fixture) Egy teszt környezete az a kontextus, amelyben a teszteset lefut. Célja biztosítani, hogy az a jól ismert és rögzített környezet, amelyben a teszteket lefuttatjuk, reprodukálható Jellemzően a következőek tartoznak hozzá egy teszt környezetéhez: Bemeneti adatok előkészítése vagy fake/mock objektumok létrehozása Objektumok és erőforrások, amelyek használatra elérhetőek bármely teszteset számára. Az ezen objektumok elérhetővé tételéhez és/vagy erőforrások allokálásához és felszabadításához szükséges tevékenységek: setup és teardown Egy adott adathalmazzal rendelkező adatbázis adatainak betöltése Adatok betöltése bizonyos állományokból

Setup és teardown Egy konkrét osztályhoz tartozó tesztek egy csoportjához gyakran szükség van ismétlődő tevékenységekre, amelyeket minden teszteset előtt el kell végezni. Példák: hozzunk létre néhány érdekes objektumot, melyekkel dolgozhatunk, nyissunk meg egy állományt, stb. Ehhez hasonlóan minden teszteset végén is szükség lehet ismétlődő feladatokra, amelyek eltakarítanak a teszt futása után. Biztosítja az erőforrások felszabadítását, a következő tesztesethez a tesztrendszer ismert állapotban lesz, stb. Mivel egy teszteset bukása véget vet az adott ponton a tesztelő metódus futásának, a takarítókód nem lehet a metódus végén.

Setup és teardown Setup: Használjuk a @Before annotációt egy metóduson, ami a minden teszteset előtt lefuttatandó kódot tartalmazza. Teardown (verdikttől függetlenül): Használjuk az @After annotációt egy metóduson, ami a minden teszteset után lefuttatandó kódot tartalmazza. Ezek a metódusok akkor is lefutnak, ha kivétel dobódik vagy ha egy állítás elbukik a tesztesetben. Ezen annotációkból bármennyit használhatunk. Minden @Before annotációval ellátott metódus lefut minden teszteset előtt, de futásuk bármely sorrendben történhet.

Példa: Használjunk egy fájlt szöveges környezetként public class OutputTest { private File output; @Before public void createoutputfile() { output = new File(...); @After public void deleteoutputfile() { output.delete(); @Test public void test1withfile() { // code for test case objective @Test public void test2withfile() { // code for test case objective

A metódusok futtatási sorrendje 1.createOutputFile() 2.test1WithFile() 3.deleteOutputFile() 4.createOutputFile() 5.test2WithFile() 6.deleteOutputFile() Feltételezzük, hogy a test1withfile a test2withfile előtt fut le, ami nem biztosított.

Egyszeri setup Az is lehetséges, hogy egy metódust egyetlen egyszer fusson le egy egész osztályhoz, bármely teszt lefutása előtt, és bármely @Before metódus előtt. Ez hasznos lehet szerverek elindításához, kommunikáció megnyitásához, stb., melyek lezárása és újranyitása minden tesztnél nagyon időigényes lenne. Ezt a @BeforeClass annotációval jelöljük (csak egy metódushoz használható, mely static kell, hogy legyen): @BeforeClass public static void anynamehere() { // class setup code here

Egyszeri teardown Ennek megfelelően egy egyszeri tisztító metódus is alkalmazható. Ez azután kerül futtatásra, hogy az osztály minden teszteset metódusa, és bármely @After metódus végrehajtódott. Használható szerverek leállításához, kommunikációs linkek lezárásához, stb. Ezt az @AfterClass annotációval jelöljük (csak egy metódushoz használható, mely static kell, hogy legyen): @AfterClass public static void anynamehere() { // class cleanup code here

Kivételtesztelés (1) Adjunk hozzá egy paramétert a @Test annotációhoz, ami arra utal, hogy egy meghatározott osztályú kivétel váltódhat ki a teszt során. @Test(expected=ExceptedTypeOfException.class) public void testexception() { exceptioncausingmethod(); Ha nem váltódik ki kivétel, vagy nem várt kivétel váltódik ki, a teszt elbukik. Azaz ha kivétel nélkül jutunk el a metódus végére, a teszteset megbukik. Ha a kivétel üzenetének tartalmát akarjuk tesztelni, vagy a kivétel várt kiváltódásának helyét akarjuk szűkíteni, ahhoz a következő dián látható megközelítés szükséges.

Kivételtesztelés (2) Kapjuk el a kivételt, és használjuk a fail()-t, ha nem váltódik ki. public void testexception() { try { exceptioncausingmethod(); // Ha eljutunk erre a pontra, a várt // kivétel nem váltódott ki. fail("kivételnek kellett volna kiváltódnia"); catch (ExceptedTypeOfException exc) { String expected = "Megfelelő hibaüzenet"; String actual = exc.getmessage(); Assert.assertEquals(expected, actual);

Tesztkészletek készítése Egy tesztkészlet lefuttatása a készletbe tartozó tesztesetek lefuttatását jelenti import org.junit.runner.runwith; import org.junit.runners.suite; @RunWith(Suite.class) @Suite.SuiteClasses({TestFeatureLogin.class, TestFeatureLogout.class, TestFeatureNavigate.class, TestFeatureUpdate.class) public class FeatureTestSuite { // az osztály üres maradhat, ez csak egy placeholder

Tesztek ignorálása Időlegesen kiiktatható bizonyos tesztek lefuttatása az @Ignore annotációval A tesztfuttató az ignorált esetekről is jelentést készít @Ignore("Test is ignored as a demonstration") @Test public void testsane() { assertthat(1, is(1)); A paraméter nem kötelező

Időkorlát A végrehajtásra időkorlát állítható be, ezredmásodpercben mérve @Test(timeout=1000) public void testwithtimeout() {...

Parametrizált tesztek https://github.com/junit-team/junit/wiki/parameterized-tests @RunWith(Parameterized.class) public class FibonacciTest { @Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { { 0, 0, { 1, 1, { 2, 1, { 3, 2, { 4, 3, { 5, 5,{ 6, 8 ); @Parameter private Public int finput; @Parameter(value=1) private Public int fexpected; public FibonacciTest(int input, int expected) { finput= input; fexpected= expected; @Test public void test() { assertequals(fexpected, Fibonacci.compute(fInput));