Глава 5. Запуск тестов из командной строки

PHPUnit можно вызвать с помощью консольной команды phpunit. Пример, который показывает запуск PHPUnit из командной строки:

phpunit ArrayTest.php
PHPUnit 3.7.0 by Sebastian Bergmann.

..

Time: 0 seconds


OK (2 tests, 2 assertions)

Для каждого теста PHPUnit выводит на экран один символ:

.

Выводится, если тест прошел.

F

Выводится, если тест провалился.

E

Выводится когда возникает ошибка.

S

Выводится, если тест был пропущен (см. Глава 9, Incomplete and Skipped Tests ).

I

Выводится, если тест помечен как "незавершён" или "ещё не реализован" (см. Глава 9, Incomplete and Skipped Tests ).

    PHPUnit разделяет статусы провал и ошибка. Провал выводится в случае, если утверждение не выполняется assertEquals(). Ошибкой может являться непойманное исключение или ошибка PHP. Иногда это разграничение становится полезным, потому что, обычно, ошибки проще исправить чем провалы. Если в проекте выявлен большой список проблем - следует сперва обратить внимание на ошибки, и, затем, проверить оставшиеся провалы.

 Параметры инструмента командной строки

Давайте посмотрим на список параметров в следующем коде:

phpunit --help
PHPUnit 3.7.0 by Sebastian Bergmann.

Usage: phpunit [switches] UnitTest [UnitTest.php]
phpunit [switches] <directory>

--log-junit <file> Log test execution in JUnit XML format to file.
--log-tap <file> Log test execution in TAP format to file.
--log-json <file> Log test execution in JSON format.

--coverage-clover <file> Generate code coverage report in Clover XML format.
--coverage-html <dir> Generate code coverage report in HTML format.
--coverage-php <file> Serialize PHP_CodeCoverage object to file.
--coverage-text=<file> Generate code coverage report in text format.
Default to writing to the standard output.

--testdox-html <file> Write agile documentation in HTML format to file.
--testdox-text <file> Write agile documentation in Text format to file.

--filter <pattern> Filter which tests to run.
--group ... Only runs tests from the specified group(s).
--exclude-group ... Exclude tests from the specified group(s).
--list-groups List available test groups.

--loader <loader> TestSuiteLoader implementation to use.
--printer <printer> TestSuiteListener implementation to use.
--repeat <times> Runs the test(s) repeatedly.

--tap Report test execution progress in TAP format.
--testdox Report test execution progress in TestDox format.

--colors Use colors in output.
--stderr Write to STDERR instead of STDOUT.
--stop-on-error Stop execution upon first error.
--stop-on-failure Stop execution upon first error or failure.
--stop-on-skipped Stop execution upon first skipped test.
--stop-on-incomplete Stop execution upon first incomplete test.
--strict Run tests in strict mode.
-v|--verbose Output more verbose information.
--debug Display debbuging information during test execution.

--process-isolation Run each test in a separate PHP process.
--no-globals-backup Do not backup and restore $GLOBALS for each test.
--static-backup Backup and restore static attributes for each test.

--bootstrap <file> A "bootstrap" PHP file that is run before the tests.
-c|--configuration <file> Read configuration from XML file.
--no-configuration Ignore default configuration file (phpunit.xml).
--include-path <path(s)> Prepend PHP's include_path with given path(s).
-d key[=value] Sets a php.ini value.

-h|--help Prints this usage information.
--version Prints the version and exits.

--debug Output debugging information.
phpunit UnitTest

Выполняет тесты, представленные в классе UnitTest. Предполагается что этот класс объявлен в файле UnitTest.php.

Класс UnitTest должен наследовать PHPUnit_Framework_TestCase или предоставлять метод public static suite(), который возвращает объект типа PHPUnit_Framework_Test. Например, экземпляр класса PHPUnit_Framework_TestSuite.

phpunit UnitTest UnitTest.php

Выполняет тесты из класса UnitTest. Этот класс должен быть объявлен в указанном файле.

--log-junit

Генерирует файл логов в формате JUnit XML для всех пройденных тестов. Более детальную информацию см. Глава 18, Logging .

--log-tap

Генерирует файл логов, используя формат Test Anything Protocol (TAP) для пройденных тестов. Более детальную информацию см. Глава 18, Logging 

--log-json

Генерирует файл логов, используя JSON формат. Более детальную информацию см. Глава 18, Logging .

--coverage-html

Генерирует отчёт о покрытии кода в формате HTML. Более детальную информацию см. Глава 14, Code Coverage Analysis .

Обратите внимание, что эта функциональность доступна, если установлены расширения tokenizer и Xdebug.

--coverage-clover

Генерирует файл логов в формате XML для пройденых тестов. Более детальную информацию см. Глава 18, Logging .

Обратите внимание, что эта функциональность доступна, если установлены расширения tokenizer и Xdebug.

--coverage-php

Генерирует сериализованый (serialized) объект класса PHP_CodeCoverage с информацией о покрытии.

Обратите внимание, что эта функциональность доступна, если установлены расширения tokenizer и Xdebug.

--coverage-text

Генерирует файл логов или вывод в командной строке в человеко-читаемом формате. Более детальную информацию см. Глава 18, Logging .

Обратите внимание, что эта функциональность доступна, если установлены расширения tokenizer и Xdebug.

--testdox-html и --testdox-text

Генерирует agile документацию в текстовом или HTML формате для всех запущеных тестов. Более детальную информацию см. Глава 15, Другие использования тестов .

--filter

Вызывает только те тесты, которые содержат в себе заданный фильтр. Фильтром может быть название (или подстрока) теста, или же регулярное выражение, которое соответствует нескольким названиям тестов.

--group

Выполняет только тесты из указанных групп. Тест может принадлежать группе, если он помечен аннотацией @group.

Аннотация @author является синонимом аннотации @group и позволяет фильтровать тесты по их авторам.

--exclude-group

Исключает тесты указанных групп. Тест может принадлежать группе, если он помечен аннотацией @group.

--list-groups

Выводит список возможных групп тестов.

--loader

Указывает какую реализацию загрузчика PHPUnit_Runner_TestSuiteLoader использовать.

Стандартная реализация загрузчика будет искать исходные файлы тестов в текущей директории и всех директориях указанных в директиве include_path. Названия классов должны следовать конвенции PEAR Naming Conventions. Например, класс Project_Package_Class должен быть реализован в файле Project/Package/Class.php.

--printer

Указывает какую реализацию форматирования вывода использовать. Этот класс должен наследовать PHPUnit_Util_Printer и реализовывать интерфейс PHPUnit_Framework_TestListener.

--repeat

Уазывает сколько раз прогнать тесты по кругу.

--tap

Выводит отчет в формате Test Anything Protocol (TAP). Более детальную информацию см. Глава 18, Logging .

--testdox

Выводит результат тестов в виде документации agile. Более детальную информацию см. Глава 15, Другие использования тестов .

--colors

Использовать цвета при выводе.

--stderr

Выводить в STDERR вместо STDOUT.

--stop-on-error

Остановить выполнение при возникновении первой ошибки.

--stop-on-failure

Остановить выполенеие при возникновении первой ошибки или провала.

--stop-on-skipped

Остановить выполенеие при первом пропущеном тесте.

--stop-on-incomplete

Остановить выполенеие при первом незавершенном тесте.

--strict

Выполнять тесты в строгом (strict) режиме.

--verbose

Выводить дополнительную информацию. Например, названия тестов, которые были пропущены или не завершены.

--process-isolation

Выполнять каждый тест в отдельном потоке PHP.

--no-globals-backup

Не сохранять и восстанавливать $GLOBALS. Более детальную информацию см. «Global State».

--static-backup

Сохранять и восстанавливать статические аттрибуты тестируемых классов. Более детальную информацию см. «Global State».

--bootstrap

"Bootstrap" - PHP файл, который будет запущен перед запуском тестов.

--configuration, -c

Прочитать настройки из файла в формате XML. Более детальную информацию см. Приложение C, The XML Configuration File .

Если файл phpunit.xml или phpunit.xml.dist существует (в этом порядке) в текущей директории и опция --configuration не использована - файл настроек автоматически будет прочитан.

--no-configuration

Игнорировать файл phpunit.xml и phpunit.xml.dist, находящиеся в текущей папке.

--include-path

Добавить указанный(е) пути в начало директивы PHP include_path.

-d

Устанавливает заданный(е) параметр(ы) конфигурации PHP.

--debug

Выводить отладочную информацию, такую как название теста, перед тем как он будет запущен.


28.03.2017 14:49