Teszt megjegyzések
A megjegyzések határozzák meg, hogy a teszteket hogyan kezelje a parancssori tesztfutó. A tesztfájl elejére íródnak.
A megjegyzések nem érzékenyek a nagy- és kisbetűkre. Nincs hatásuk akkor sem, ha a tesztet kézzel, hagyományos PHP szkriptként futtatjuk.
Példa:
TEST
Ez valójában nem egy megjegyzés. Csak a teszt címét állítja be, amely a hiba esetén vagy a naplókba kerül kiírásra.
@skip
A teszt kihagyásra kerül. Praktikus a teszt ideiglenes kikapcsolásához.
@phpVersion
A teszt kihagyásra kerül, ha nem a megfelelő PHP-verzióval fut. A megjegyzést a következőképpen írjuk
@phpVersion [operator] version
. Az operátort elhagyhatjuk, alapértelmezett a >=
. Példák:
@phpExtension
A teszt kihagyásra kerül, ha az összes említett PHP-bővítmény nincs betöltve. Több kiterjesztést is írhatunk egyetlen annotációba, vagy többször is használhatjuk az annotációt.
@dataProvider
Ez az annotáció akkor illik, ha a tesztet többször, de különböző adatokkal szeretnénk lefuttatni. (Nem tévesztendő össze a TestCase azonos nevű annotációjával.)
Az annotációt úgy írjuk, hogy @dataProvider file.ini
. Az INI fájl elérési útja a tesztfájlhoz képest
relatív. A teszt annyiszor fut le, ahány szakasz található az INI fájlban. Tegyük fel, hogy az INI fájl
databases.ini
:
és a database.phpt
fájl ugyanabban a könyvtárban található:
A teszt háromszor fut le, és a $args
tartalmazni fogja a mysql
, postgresql
vagy
sqlite
szakaszok értékeit.
Van még egy variáció, amikor kérdőjellel írunk megjegyzéseket, mint @dataProvider? file.ini
. Ebben az
esetben a teszt kihagyásra kerül, ha az INI fájl nem létezik.
Az összes megjegyzési lehetőséget még nem említettük. Az INI fájl után feltételeket is írhatunk. A teszt csak akkor fut le az adott szakaszra, ha minden feltétel megfelel. Bővítsük ki az INI fájlt:
és használjuk a feltételes megjegyzést:
A teszt csak egyszer fut le a postgresql 9.1
szakaszra. A többi szakasz nem felel meg a feltételeknek.
Hasonlóképpen, INI helyett átadhatjuk egy PHP-szkript elérési útvonalát is. Ennek tömböt vagy Traversable-t kell
visszaadnia. Fájl databases.php
:
@multiple
Ezt a következőképpen írjuk: @multiple N
, ahol N
egy egész szám. A teszt pontosan N-szer
fut le.
@testCase
Az annotációnak nincsenek paraméterei. Akkor használjuk, amikor egy tesztet TestCase osztályokként írunk. Ebben az esetben a parancssori tesztfutó az egyes metódusokat külön folyamatokban és párhuzamosan, több szálban fogja futtatni. Ez jelentősen felgyorsíthatja a teljes tesztelési folyamatot.
@exitCode
Írjuk @exitCode N
néven, ahol a tesztben a N
is the exit code of the test. For example if
exit(10)
meghívásra kerül, ott az annotációt @exitCode 10
néven írjuk. Sikertelennek tekintjük,
ha a teszt más kóddal végződik. A 0 (nulla) kilépési kódot akkor ellenőrizzük, ha elhagyjuk a megjegyzést.
@httpCode
A megjegyzés csak akkor kerül kiértékelésre, ha a PHP bináris CGI. Ellenkező esetben figyelmen kívül hagyja. Ezt
@httpCode NNN
-ként írjuk, ahol a NNN
a várt HTTP-kód. A 200-as HTTP-kódot akkor ellenőrizzük,
ha elhagyjuk a megjegyzést. Ha a NNN
karakterláncot nullaként értékelt karakterláncként írjuk, például
any
, a HTTP-kódot egyáltalán nem ellenőrzi.
@outputMatch a @outputMatchFile
Az annotációk viselkedése összhangban van a Assert::match()
és a Assert::matchFile()
állításokkal. De a minta megtalálható a teszt standard kimenetén. Megfelelő felhasználási eset, amikor feltételezzük,
hogy a teszt végzetes hibával ér véget, és ellenőriznünk kell a kimenetét.
@phpIni
A teszt INI konfigurációs értékeit állítja be. Például a @phpIni precision=20
címre írjuk, és
ugyanúgy működik, mintha a parancssorból adnánk át értéket a -d precision=20
paraméterrel.