Opombe testov
Opombe določajo, kako bo teste obravnaval zaganjalnik testov iz ukazne vrstice. Zapisujejo se na začetek datoteke s testom.
Pri opombah se velikost črk ne upošteva. Prav tako nimajo vpliva, če se test zažene ročno kot običajen skript PHP.
Primer:
/**
* TEST: Basic database query test.
*
* @dataProvider files/databases.ini
* @exitCode 56
* @phpVersion < 5.5
*/
require __DIR__ . '/../bootstrap.php';
TEST
To pravzaprav sploh ni opomba, ampak samo določa naslov testa, ki se izpiše ob neuspehu ali v dnevnik.
@skip
Test se preskoči. Uporabno za začasno izključitev testov.
@phpVersion
Test se preskoči, če ni zagnan z ustrezno različico PHP. Opombo zapišemo kot
@phpVersion [operator] različica
. Operator lahko izpustite, privzeti je >=
. Primeri:
/**
* @phpVersion 5.3.3
* @phpVersion < 5.5
* @phpVersion != 5.4.5
*/
@phpExtension
Test se preskoči, če niso naložene vse navedene razširitve PHP. Več razširitev lahko navedete v eni opombi ali jo uporabite večkrat.
/**
* @phpExtension pdo, pdo_pgsql, pdo_mysql
* @phpExtension json
*/
@dataProvider
Če želite testno datoteko zagnati večkrat, vendar z drugačnimi vhodnimi podatki, je uporabna prav ta opomba. (Ne zamenjujte z istoimensko opombo za TestCase.)
Zapišemo kot @dataProvider file.ini
, pot do datoteke se jemlje relativno glede na datoteko s testom. Test se bo
zagnal tolikokrat, kolikor je odsekov v datoteki INI. Predpostavimo datoteko INI databases.ini
:
[mysql]
dsn = "mysql:host=127.0.0.1"
user = root
password = ******
[postgresql]
dsn = "pgsql:host=127.0.0.1;dbname=test"
user = postgres
password = ******
[sqlite]
dsn = "sqlite::memory:"
in v istem imeniku test database.phpt
:
/**
* @dataProvider databases.ini
*/
$args = Tester\Environment::loadData();
Test se bo zagnal trikrat in $args
bo vedno vseboval vrednosti iz odseka mysql
,
postgresql
ali sqlite
.
Obstaja še različica, ko opombo zapišemo z vprašajem kot @dataProvider? file.ini
. V tem primeru se test
preskoči, če datoteka INI ne obstaja.
S tem možnosti opombe še niso izčrpane. Za ime datoteke INI lahko določite pogoje, pod katerimi se bo test za dani odsek zagnal. Razširimo datoteko INI:
[mysql]
dsn = "mysql:host=127.0.0.1"
user = root
password = ******
[postgresql 8.4]
dsn = "pgsql:host=127.0.0.1;dbname=test"
user = postgres
password = ******
[postgresql 9.1]
dsn = "pgsql:host=127.0.0.1;dbname=test;port=5433"
user = postgres
password = ******
[sqlite]
dsn = "sqlite::memory:"
in uporabimo opombo s pogojem:
/**
* @dataProvider databases.ini postgresql, >=9.0
*/
Test se bo zagnal samo enkrat in sicer za odsek postgresql 9.1
. Drugi odseki ne bodo šli skozi filter pogoja.
Podobno lahko namesto datoteke INI pokažete na skript PHP. Ta mora vrniti polje ali Traversable
. Datoteka
databases.php
:
return [
'postgresql 8.4' => [
'dsn' => '...',
'user' => '...',
],
'postgresql 9.1' => [
'dsn' => '...',
'user' => '...',
],
];
@multiple
Zapišemo kot @multiple N
, kjer je N
celo število. Test se bo zagnal natanko N-krat.
@testCase
Opomba nima parametrov. Uporabite jo, če teste pišete kot razrede TestCase. V tem primeru bo zaganjalnik testov iz ukazne vrstice zaganjal posamezne metode v ločenih procesih in vzporedno v več nitih. To lahko znatno pospeši celoten proces testiranja.
@exitCode
Zapišemo kot @exitCode N
, kjer je N
izhodna koda zagnanega testa. Če je v testu na primer klicano
exit(10)
, opombo zapišemo kot @exitCode 10
in če se test konča z drugo kodo, se to šteje za
neuspeh. Če opombe ne navedete, se preveri izhodna koda 0 (nič).
@httpCode
Opomba se uporabi samo, če je izvedljiva datoteka PHP CGI. Sicer se ignorira. Zapišemo kot @httpCode NNN
, kjer
je NNN
pričakovana koda HTTP. Če opombe ne navedete, se preverja koda HTTP 200. Če NNN
zapišete kot
niz, ki se ovrednoti na nič, na primer any
, se koda HTTP ne preverja.
@outputMatch in @outputMatchFile
Funkcija opomb je enaka asercijam Assert::match()
in Assert::matchFile()
. Vzorec (pattern) pa se
išče v besedilu, ki ga je test poslal na svoj standardni izhod. Uporabo najde, če predpostavljate, da se bo test končal
s fatalno napako in morate preveriti njegov izhod.
@phpIni
Za test nastavi konfiguracijske vrednosti INI. Zapišemo na primer kot @phpIni precision=20
in deluje enako, kot
če bi vrednost vnesli iz ukazne vrstice prek parametra -d precision=20
.