Spec-Zone.ru › PHPUnit

Запуск тестов из командной строки

Запуск исполняемого файла 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API