TestCase
Az egyszerű tesztekben az állítások egyenként követhetik egymást. Néha azonban hasznos az állításokat tesztosztályba foglalni és így strukturálni.
Az osztálynak a Tester\TestCase
leszármazottjának kell lennie, és egyszerűen testcase-ként
beszélünk róla.
A setUp()
és a tearDown()
metódusokkal gazdagíthatjuk a teszteseteket. Ezeket minden tesztelési
metódus előtt/után hívjuk meg:
Ha hiba lép fel a setUp()
vagy a tearDown()
fázisban, a teszt sikertelen lesz. Ha a tesztelési
metódusban történik hiba, a tearDown()
metódus mindenképpen meghívásra kerül, de elnyomott hibákkal.
Javasoljuk, hogy a @testCase annotációt írjuk a teszt elejére, ekkor a parancssori tesztfutó az egyes teszteset metódusokat külön folyamatokban és párhuzamosan, több szálban futtatja. Ez jelentősen felgyorsíthatja a teljes tesztelési folyamatot.
Módszerek megjegyzése
A metódusok teszteléséhez néhány annotáció áll rendelkezésünkre. Ezeket a tesztelési módszer felé írjuk.
@throws
Ez a Assert::exception()
egyenlő használata egy tesztelési metóduson belül. De a jelölés olvashatóbb:
@dataProvider
Ez az annotáció akkor illik, ha a tesztelési módszert többször, de különböző argumentumokkal akarjuk futtatni. (Nem tévesztendő össze a fájlokra vonatkozó azonos nevű annotációval.)
Érvként a metódus nevét írjuk, amely paramétereket ad vissza a tesztelési metódushoz. A metódusnak egy tömböt vagy Traversable-t kell visszaadnia. Egyszerű példa:
A másik @dataProvider megjegyzésváltozat argumentumként elfogadja az INI fájl elérési útvonalát (viszonylag a
tesztfájlhoz képest). A metódus annyiszor hívódik meg, ahány szakasz található az INI-fájlban. Fájl
loop-args.ini
:
és a módszer, amely az INI-fájlt használja:
Hasonlóan átadhatjuk az INI fájl helyett egy PHP-szkript elérési útvonalát. Ennek tömböt vagy Traversable-t kell
visszaadnia. Fájl loop-args.php
: