Adnotacja o testach
Adnotacje określają, jak biegacz testowy będzie obsługiwał testy z linii poleceń. Są one zapisywane na początku pliku testowego.
Adnotacje nie uwzględniają wielkości liter. Nie mają one również wpływu, jeśli test jest uruchamiany ręcznie jako zwykły skrypt PHP.
Przykład:
TEST
To nie jest właściwie adnotacja, po prostu określa tytuł testu, który jest drukowany na niepowodzeniach lub do dziennika.
@skip
Test jest pomijany. Dobre do tymczasowego odrzucania testów.
@phpVersion
Test zostanie pominięty, jeśli nie zostanie uruchomiony z odpowiednią wersją PHP. Adnotację zapisujemy jako.
@phpVersion [operator] verze
. Operator może być pominięty, domyślnie jest to >=
. Przykłady:
@phpExtension
Test zostanie pominięty, jeśli nie zostaną załadowane wszystkie wymienione rozszerzenia PHP. Wiele rozszerzeń może być wymienionych w jednej adnotacji lub używanych wielokrotnie.
@dataProvider
Jeśli chcesz uruchomić plik testowy wiele razy, ale z różnymi danymi wejściowymi, ta adnotacja jest przydatna. (Nie należy mylić z tą samą adnotacją dla TestCase).
Zapisujemy go jako @dataProvider file.ini
, ścieżka do pliku jest przyjmowana względem pliku testowego. Test
zostanie uruchomiony tyle razy, ile jest sekcji w pliku INI. Załóżmy, że plik INI to databases.ini
:
i w tym samym katalogu test database.phpt
:
Test zostanie uruchomiony trzy razy, a $args
zawsze będzie zawierał wartości z mysql
,
postgresql
lub sqlite
.
Istnieje również wariant, w którym zapisujemy adnotację ze znakiem zapytania jako @dataProvider? file.ini
. W
tym przypadku test zostanie pominięty, jeśli plik INI nie istnieje.
To nie koniec opcji związanych z adnotacjami. Po nazwie pliku INI możemy określić warunki, w jakich test będzie uruchamiany dla danej sekcji. Rozwiń plik INI:
i użyć adnotacji o stanie:
Test zostanie przeprowadzony tylko raz dla odcinka postgresql 9.1
. Pozostałe odcinki nie przejdą przez filtr
warunków.
Podobnie możemy odwołać się do skryptu PHP zamiast do pliku INI. Musi to zwrócić tablicę lub Traversable. Plik
databases.php
:
@multiple
Zapisujemy ją jako @multiple N
, gdzie N
jest liczbą całkowitą. Test zostanie przeprowadzony
dokładnie N razy.
@testCase
Adnotacja nie posiada żadnych parametrów. Używamy go, gdy piszemy testy jako klasy TestCase. W takim przypadku biegacz testowy linii poleceń uruchomi każdą metodę w oddzielnych procesach i równolegle w wielu wątkach. Może to znacznie przyspieszyć cały proces testowania.
@exitCode
Zapisujemy go jako @exitCode N
, gdzie N
je návratový kód spuštěného testu. Je-li v testu
například voláno exit(10)
, adnotację zapisujemy jako @exitCode 10
i jeśli test zakończy się
innym kodem, jest to traktowane jako niepowodzenie. Jeśli nie podano adnotacji, kod zwrotny jest walidowany jako 0 (zero).
@httpCode
Adnotacja jest stosowana tylko wtedy, gdy PHP jest binarnym CGI. W przeciwnym razie jest ignorowany. Zapisujemy go jako
@httpCode NNN
gdzie NNN
to oczekiwany kod HTTP. Jeśli nie podano adnotacji, zatwierdzany jest kod HTTP
200. Jeśli NNN
jest zapisany jako ciąg o wartości zero, na przykład any
, kod HTTP nie jest
weryfikowany.
@outputMatch i @outputMatchFile
Funkcja adnotacji jest identyczna jak w przypadku asercji Assert::match()
i Assert::matchFile()
.
Jednak wzorzec jest szukany w tekście, który test wysłał na swoje standardowe wyjście. Jest to przydatne, jeśli spodziewamy
się, że test zakończy się fatalnym błędem i musimy zatwierdzić jego wyjście.
@phpIni
Ustawia wartości INI konfiguracji dla testu. Na przykład piszemy go jako @phpIni precision=20
i działa tak
samo, jakbyśmy wprowadzili wartość z linii poleceń poprzez parametr -d precision=20
.