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
Выводить отладочную информацию, такую как название теста, перед тем как он будет запущен.