-
-
Notifications
You must be signed in to change notification settings - Fork 280
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
468 additions
and
421 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
- [Úvod |homepage] | ||
- [Přehled |overview] | ||
- [Dokumentace |documentation] | ||
- [Průvodce |guide] | ||
- [Psaní testů |writing-tests] | ||
- [Spouštení testů |running-tests] | ||
- [GitHub |https://github.com/nette/tester] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,191 @@ | ||
Spouštění testů | ||
*************** | ||
|
||
Tester spouštíme z příkazové řádky. Bez parametrů pouze vypíše nápovědu. | ||
|
||
/-- | ||
vendor/bin/tester # UNIX | ||
vendor\bin\tester # Windows | ||
\-- | ||
|
||
Pro zjednodušení budeme dále uvádět pouze příkaz **tester**. Ke spuštění je ale nutné použít jeden z výše popsaných způsobů s úplnou cestou. | ||
|
||
Jako parametr uvedeme adresář s testy. Pro aktuální adresář stačí zadat tečku: | ||
|
||
/-- | ||
tester . | ||
\-- | ||
|
||
Tester projde adresář a podadresáře, vytvoří si seznam nalezených testů a potom je provádí. Každý test spustí jako nový PHP proces, každý test tak probíhá zcela izolovaně od ostatních. | ||
|
||
.[tip] | ||
Tester vyhledává `*.phpt` a `*Test.php` soubory. Jako první spouští testy, které při předchozím běhu selhaly. | ||
|
||
.[warning] | ||
Tester spouští PHP procesy s parametrem **-n**, tedy bez **php.ini**. Detailněji v kapitole [#Vlastní php.ini]. | ||
|
||
|
||
|
||
Parametry příkazové řádky | ||
========================= | ||
Přehled všech voleb příkazové řádky získáme spuštěním Testeru bez parametrů, anebo s parametrem `-h`. | ||
|
||
-p <path> | ||
--------- | ||
Pro spouštění testů použije Tester tuto PHP binárku: | ||
|
||
/-- | ||
tester -p /home/user/php-7.2.0-beta/php-cgi tests | ||
\-- | ||
|
||
|
||
-c <path> | ||
--------- | ||
Volba je stejná jako pro PHP binárku. Pro testy bude použit zadaný **php.ini**. Ve výchozím stavu se žádný php.ini nepoužije. Příklad, kdy distribuujeme php.ini s testy: | ||
|
||
/-- | ||
tester -c tests/php.ini tests | ||
\-- | ||
|
||
|
||
-C | ||
--- | ||
Použije se systémové **php.ini**. Na UNIXu také všechny příslušné INI soubory `/etc/php/{sapi}/conf.d/*.ini`. | ||
|
||
|
||
-l | --log <path> | ||
----------------- | ||
Do souboru bude zapsán průběh testování. Všechny selhané, přeskočené, ale i úspěšné testy: | ||
|
||
/-- | ||
tester --log /var/log/tests.log tests | ||
\-- | ||
|
||
|
||
-d <key=value> | ||
-------------- | ||
Volba je stejná jako pro PHP binárku. Pro testy definuje INI hodnotu. Parametr může být použit vícekrát. | ||
|
||
|
||
-s | ||
--- | ||
Zobrazí se informace o přeskočených testech. | ||
|
||
|
||
--stop-on-fail | ||
-------------- | ||
Tester zastaví testování u prvního selhávajícího testu. | ||
|
||
|
||
-j <num> | ||
-------- | ||
Určuje, kolik paralelních procesů s testy se spustí. Výchozí hodnota je 8. Chceme-li, aby všechny testy proběhly v sérii, použijeme hodnotu 1. | ||
|
||
|
||
-o <console|tap|junit|none> | ||
--------------------------- | ||
Nastaví formát výstupu. Výchozí je formát pro konzoli. | ||
|
||
- `console`: shodné s výchozím formátem, ale v tomto případě se nezobrazí ASCII logo | ||
- `tap`: [TAP formát |https://en.wikipedia.org/wiki/Test_Anything_Protocol] vhodný pro strojové zpracování | ||
- `junit`: XML formát JUnit, taktéž vhodný pro strojové zpracování | ||
- `none`: nic se nevypisuje | ||
|
||
|
||
-w | --watch <path> | ||
------------------- | ||
Po dokončení testování Tester neskončí, ale zůstane běžet a sleduje zadaný adresář. Při změně spustí testy znova. Parametr může být použit vícekrát. Hodí se při tvorbě a ladění testů. | ||
|
||
|
||
-i | --info | ||
----------- | ||
Zobrazí informace o běhovém prostředí pro testy. Například: | ||
|
||
/-- | ||
tester -p /usr/bin/php7.1 -c tests/php.ini --info | ||
|
||
|
||
PHP binary: | ||
/usr/bin/php7.1 | ||
|
||
PHP version: | ||
7.1.7-1+0~20170711133844.5+jessie~1.gbp5284f4 (cli) | ||
|
||
Loaded php.ini files: | ||
/var/www/dev/demo/tests/php.ini | ||
|
||
PHP temporary directory: | ||
/tmp | ||
|
||
Loaded extensions: | ||
Core, ctype, date, dom, ereg, fileinfo, filter, hash, ... | ||
\-- | ||
|
||
|
||
--setup <path> | ||
-------------- | ||
Tester při startu načte zadaný PHP skript. V něm je k dispozici proměnná `Tester\Runner\Runner $runner`. Předpokládejme soubor `tests/runner-setup.php` s obsahem: | ||
|
||
/--php | ||
$runner->outputHandlers[] = new MyOutputHandler; | ||
\-- | ||
|
||
Tester spustíme: | ||
|
||
/-- | ||
tester --setup tests/runner-setup.php tests | ||
\-- | ||
|
||
|
||
--temp <path> | ||
------------- | ||
Nastaví cestu k adresáři pro dočasné soubory Testeru. Výchozí hodnota podle `sys_get_temp_dir()`. Není-li výchozí hodnota validní, budete upozorněni. | ||
|
||
Pokud si nejsme jisti, jaký adresář se používá, spustíme Tester s parametrem `--info`. | ||
|
||
|
||
--colors 1|0 | ||
------------ | ||
Ve výchozím stavu Tester detekuje barevný terminál a obarvuje svůj výstup. Tato volba autodetekci přebíjí. Globálně můžeme obarvování nastavit systémovou proměnnou prostředí `NETTE_TESTER_COLORS`. | ||
|
||
|
||
--coverage <path> | ||
----------------- | ||
Tester vygeneruje report s přehledem, kolik zdrojového kódu testy pokrývají. Tato volba vyžaduje instalované PHP rozšíření [Xdebug |http://xdebug.org/], anebo PHP 7 s PHPDBG SAPI, které je rychlejší. Přípona cílového souboru určuje jeho formát. Buď HTML anebo Clover XML. | ||
|
||
/-- | ||
tester tests --coverage coverage.html # HTML report | ||
tester tests --coverage coverage.xml # Clover XML report | ||
\-- | ||
|
||
Při použití PHPDBG můžeme u obsáhlých testů narazit na selhání testu kvůli vyčerpání paměti. Sběr informací o pokrytém kódu je paměťově náročný. V tomto případě nám pomůže volání `Tester\CodeCoverage\Collector::flush()` uvnitř testu. Zapíše nasbíraná data na disk a paměť uvolní. Pokud sběr dat neprobíhá, nebo je použit Xdebug, volání nemá žádný efekt. | ||
|
||
"Ukázka HTML reportu":https://files.nette.org/tester/coverage.html s pokrytím kódu. | ||
|
||
|
||
--coverage-src <path> | ||
--------------------- | ||
Použijeme současně s volbou `--coverage`. `<path>` je cesta ke zdrojovým kódům, pro které se report generuje. Může se použít opakovaně. | ||
|
||
|
||
Vlastní php.ini | ||
=============== | ||
Tester spouští PHP procesy s parametrem **-n**, žádné **php.ini** není načteno. V UNIXu ani ty z `/etc/php/conf.d/*.ini`. To zajistí co nejčistší prostředí pro běh testů, ale také vyřadí všechna PHP rozšíření běžně načtená systémovým PHP. | ||
|
||
Chcete-li načítání systémových php.ini souborů zachovat, použijte parametr `-C`. | ||
|
||
Pokud nějaká rozšíření nebo speciální INI nastavení pro testy potřebujete, doporučujeme vytvoření vlastního **php.ini** souboru, který bude distribuován s testy. Tester pak spouštíme s parametrem **-c**, například `tester -c tests/php.ini tests`, kde INI soubor může vypadat takto: | ||
|
||
/-- | ||
[PHP] | ||
|
||
extension=php_pdo_mysql.dll | ||
extension=php_pdo_pgsql.dll | ||
|
||
memory_limit=512M | ||
\-- | ||
|
||
.[note] | ||
Spuštění Testeru v UNIXu se systémovým **php.ini**, například `tester -c /etc/php/cli/php.ini` nenačte ostatní INI z `/etc/php/conf.d/*.ini`. To je vlastnost PHP, ne Testeru. | ||
|
||
{{composer: nette/tester}} |
Oops, something went wrong.