Запуск тестов из командной строки
Запуск исполняемого файла PHPUnit из командной строки возможен с помощью команды phpunit. Следующий код демонстрирует как запустить тесты с помощью PHPUnit командной строки:
./tools/phpunit tests/ArrayTest.php PHPUnit 12.0.0 by Sebastian Bergmann and contributors. Runtime: PHP 8.2.2 .. 2 / 2 (100%) Time: 00:00.077, Memory: 10.00 MB OK (2 tests, 2 assertions)
При вызове, как показано выше, PHPUnit командной строки будет искать файл исходного кода ArrayTest.php в текущем каталоге, загружать его и ожидать наличия класса тестов ArrayTest. Затем он запустит тесты, найденные в этом классе.
Результаты и проблемы
PHPUnit разделяет результат (ошибка, сбой, незавершенность, пропуск или успешность) теста от проблем (считаются рискованными, вызывают предупреждение и т.д.) теста.
Что касается результата, PHPUnit различает сбои и ошибки. Тест терпит неудачу, когда утверждение не выполнено. Это отличается от непредвиденной исключительной ситуации или ошибки PHP, которая возникает во время выполнения теста. В этом случае тест завершается ошибкой.
Ошибки, как правило, легче исправить, чем сбои. Если у вас большой список проблем, лучше сначала устранить ошибки и посмотреть, остались ли сбои после их исправления.
Для каждого запуска теста инструмент PHPUnit печатает один символ, чтобы указать ход выполнения:
.
Печатается, когда успешный тест не содержит проблем
F
Печатается, когда утверждение завершается неудачей во время выполнения метода теста
E
Печатается, когда при выполнении метода теста возникает ошибка
W
Печатается, когда тест вызвал предупреждение
R
Печатается, когда тест был признан рискованным (см. Рискованные тесты)
D
Печатается, когда тест вызвал устаревание
N
Печатается, когда тест вызвал уведомление
I
Печатается, когда тест помечен как неполный (см. Неполные тесты)
S
Печатается, когда тест был пропущен (см. Пропускание тестов)
Параметры командной строки
Настройка
--bootstrap <file>
Настраивает скрипт PHP, который включается перед запуском тестов. В распространенных случаях этот скрипт не должен делать ничего больше, чем регистрировать автозагрузчик, чтобы PHP мог найти тестируемые части кода.
-c|--configuration <file>
Настраивает запуск тестов PHPUnit с помощью файла конфигурации XML. Это не требуется, когда файл конфигурации, который нужно использовать, находится в текущем каталоге и называется
phpunit.xml,phpunit.dist.xmlилиphpunit.xml.dist.
--no-configuration
Не используйте файл конфигурации XML с именем
phpunit.xml,phpunit.dist.xmlилиphpunit.xml.dist, который находится в текущем каталоге.
--no-extensions
Не загружайте расширения PHPUnit test runner из архивов PHP (PHAR) из каталога, настроенного в файле конфигурации XML. Не запускайте расширения PHPUnit test runner, настроенные в файле конфигурации XML.
--include-path <path(s)>
Добавить заданный путь(и) в PHP include_path.
-d <key[=value]>
Настройка параметра конфигурации PHP (php.ini).
--cache-directory <dir>
Настройка каталога, в котором PHPUnit test runner может кешировать данные, такие как результаты тестов (например, для переупорядочивания тестов на основе предыдущих ошибок) или информацию о протестированном коде, а также тестовый код, сгенерированный с помощью статического анализа (существенно улучшает производительность анализа покрытия кода, например).
--generate-configuration
Генерировать файл конфигурации XML с настройками по умолчанию.
--migrate-configuration
Мигрировать файл конфигурации XML из формата предыдущей версии в текущий формат.
Выбор
--list-suites
Список доступных наборов тестов, определенных в файле конфигурации XML. См. Создание набора тестов с использованием XML-конфигурации для примера.
--testsuite <name>
Запуск только тестов из указанного списка наборов тестов, разделенных запятыми, которые определены в файле конфигурации XML. См. Создание набора тестов с использованием XML-конфигурации для примера.
--exclude-testsuite <name>
Запуск всех тестов, за исключением тестов из указанного списка наборов тестов, разделенных запятыми, которые определены в файле конфигурации XML.
--list-groups
Список доступных групп тестов. Тесты могут быть помещены в несколько групп тестов с использованием атрибутов
PHPUnit\Framework\Attributes\Group,PHPUnit\Framework\Attributes\Small,PHPUnit\Framework\Attributes\Medium,PHPUnit\Framework\Attributes\LargeиPHPUnit\Framework\Attributes\Ticket.
--group <name>
Запуск только тестов из указанного списка групп тестов, разделенных запятыми.
--exclude-group <name>
Запуск всех тестов, за исключением тестов из указанного списка групп тестов, разделенных запятыми.
Выполнение
Изоляция
--process-isolation
Запускать каждый тест в отдельном процессе PHP.
--globals-backup
Создавать резервную копию глобальных и суперглобальных переменных перед каждым тестом и восстанавливать их после каждого теста.
--static-backup
Создавать резервную копию статических свойств классов перед каждым тестом и восстанавливать их после каждого теста.
Рискованные тесты
--strict-coverage
Быть строгим в отношении метаданных покрытия кода. Для получения более подробной информации см. Непреднамеренно покрытый код.
--strict-global-state
Быть строгим в отношении изменений глобального состояния. Для получения более подробной информации см. Изменение глобального состояния.
--disallow-test-output
Быть строгим в отношении вывода во время выполнения тестов. Для получения более подробной информации см. Вывод во время выполнения тестов.
--enforce-time-limit
Выполнять принудительное ограничение времени, основанное на размере теста. Для получения более подробной информации см. Время ожидания выполнения теста.
--default-time-limit <sec>
Время ожидания в секундах для тестов без объявленного размера. Для получения более подробной информации см. Время ожидания выполнения теста.
--dont-report-useless-tests
Не сообщать о тестах, которые ничего не проверяют. Для получения более подробной информации о стандартном поведении см. Бесполезные тесты.
Автоматически остановить, когда…
--stop-on-defect
Останавливать выполнение при первом возникновении ошибки, неудачи, предупреждения или признания теста рискованным.
--stop-on-error
Останавливать выполнение при первой ошибке.
--stop-on-failure
Останавливать выполнение при первой неудаче.
--stop-on-warning
Останавливать выполнение при первом предупреждении.
--stop-on-risky
Останавливать выполнение при первом рискованном тесте.
--stop-on-deprecation
Останавливать выполнение при первом возникновении устаревшего кода (
E_DEPRECATED,E_USER_DEPRECATEDили устаревший код PHPUnit).
--stop-on-notice
Останавливать выполнение при первом возникновении уведомления (
E_STRICT,E_NOTICEилиE_USER_NOTICE).
--stop-on-skipped
Останавливать выполнение при первом пропущенном тесте.
--stop-on-incomplete
Останавливать выполнение при первом неполном тесте.
Выход с кодом ошибки, когда…
--fail-on-warning
Выход с кодом оболочки, указывающим на ошибку, даже если все тесты прошли успешно, но по крайней мере один тест сгенерировал предупреждение.
--fail-on-risky
Выход с кодом оболочки, указывающим на ошибку, даже если все тесты прошли успешно, но по крайней мере один тест был признан рискованным.
--fail-on-deprecation
Выход с кодом оболочки, указывающим на ошибку, даже если все тесты прошли успешно, но по крайней мере один тест вызвал устаревший код (
E_DEPRECATEDилиE_USER_DEPRECATED).
--fail-on-phpunit-deprecation
Выход с кодом оболочки, указывающим на ошибку, даже если все тесты прошли успешно, но по крайней мере один тест вызвал устаревший код PHPUnit.
--fail-on-notice
Выход с кодом оболочки, указывающим на ошибку, даже если все тесты прошли успешно, но по крайней мере один тест вызвал уведомление (
E_STRICT,E_NOTICEилиE_USER_NOTICE).
--fail-on-incomplete
Выход с кодом оболочки, указывающим на ошибку, даже если все тесты прошли успешно, но по крайней мере один тест был помечен как неполный.
--fail-on-skipped
Выход с кодом оболочки, указывающим на ошибку, даже если все тесты прошли успешно, но по крайней мере один тест был пропущен.
Кэш результатов тестов
--cache-result
Запись результатов тестов в файл кэша. Это необходимо, например, для изменения порядка тестов на основе предыдущих ошибок.
--do-not-cache-result
Не записывать результаты тестов в файл кэша.
Порядок тестов
--order-by <order>
Изменить порядок тестов, используя стратегию
<order>перед их запуском.<order>может быть списокdefault,defects,depends,duration,no-depends,random,reverseиsize, разделёнными запятыми.
--random-order-seed <N>
Использовать указанное случайное семя при запуске тестов в случайном порядке.
Отчёт
Консоль
--colors <flag>
Использовать цвета в выводе (
never,autoилиalways)
--columns <n>
Количество столбцов для вывода прогресса.
--columns max
Использовать максимальное количество столбцов для вывода прогресса.
--stderr
Записывать в php://stderr вместо php://stdout.
Вывод прогресса и результатов
--no-progress
Отключить вывод прогресса выполнения тестов.
--no-results
Отключить вывод результатов тестов.
--no-output
Отключить весь вывод.
Подробности об ошибках
--display-incomplete
Отобразить подробности о неполных тестах.
--display-skipped
Отобразить подробности о пропущенных тестах.
--display-deprecations
Отобразить подробности об устаревших кодах, сгенерированных тестами.
--display-phpunit-deprecations
Отобразить подробности об устаревших кодах PHPUnit.
--display-errors
Отобразить подробности об ошибках, сгенерированных тестами.
--display-notices
Отобразить подробности о предупреждениях, сгенерированных тестами.
--display-warnings
Отобразить подробности о предупреждениях, сгенерированных тестами.
--reverse-list
Выводить дефекты в обратном порядке.
Альтернативный вывод
--teamcity
Заменить стандартный вывод прогресса и результатов форматом TeamCity.
--testdox
Заменить стандартный вывод результатов форматом TestDox.
--testdox-summary
Повторять вывод TestDox для неудачных тестов после обычного вывода TestDox. Это работает только при использовании параметра
--testdox(см. выше).
Ведение журнала
--log-junit <file>
Записывать результаты тестирования в формате JUnit XML в файл.
--log-teamcity <file>
Записывать результаты тестирования в формате TeamCity в файл.
--testdox-html <file>
Записывать результаты тестирования в формате TestDox (HTML) в файл.
--testdox-text <file>
Записывать результаты тестирования в формате TestDox (текст) в файл.
--log-events-text <file>
Потоковый вывод событий в виде простого текста в файл.
--log-events-verbose-text <file>
Потоковый вывод событий в виде простого текста (с телеметрической информацией) в файл.
--no-logging
Игнорировать ведение журнала, настроенное в файле конфигурации XML.
Покрытие кода
--coverage-clover <file>
Записывать отчет о покрытии кода в формате Clover XML в файл.
--coverage-cobertura <file>
Записывать отчет о покрытии кода в формате Cobertura XML в файл.
--coverage-crap4j <file>
Записывать отчет о покрытии кода в формате Crap4J XML в файл.
--coverage-html <dir>
Записывать отчет о покрытии кода в формате HTML в каталог.
--coverage-php <file>
Записывать сериализованные данные о покрытии кода в файл.
--coverage-text=<file>
Записывать отчет о покрытии кода в текстовом формате в файл (по умолчанию:
php://stdout).
--coverage-xml <dir>
Записывать отчет о покрытии кода в формате XML в каталог.
--warm-coverage-cache
Нагревать кэш для статического анализа, необходимого для отчетов о покрытии кода.
--coverage-filter <dir>
Включить
<dir>в отчеты о покрытии кода.
--path-coverage
Создавать отчет о покрытии пути кода дополнительно к покрытию строк.
--disable-coverage-ignore
Отключить метаданные для игнорирования покрытия кода.
--no-coverage
Игнорировать создание отчетов о покрытии кода, настроенное в файле конфигурации XML.
Разное
-h|--help
Выводит информацию об использовании.
--version
Выводит версию и завершает работу.
--atleast-version <min>
Проверяет, что версия больше, чем
<min>, и завершает работу.
--check-version
Проверяет, является ли PHPUnit последней версией, и завершает работу.
© 2005–2025 Sebastian Bergmann
Licensed under the Creative Commons Attribution 3.0 Unported License.
https://docs.phpunit.de/en/12.0/textui.html