Тестовый запуск командной строки (1)
Вступление
Тестер запуска командной строки PHPUnit используется для запуска тестов PHPUnit на терминале. это
Тестовый запуск командной строки может быть вызван командой `phpunit`. Приведенный ниже фрагмент кода показывает, как запускать тесты с помощью программы запуска командной строки PHPUnit:$ phpunit ArrayTest
PHPUnit |version|.0 by Sebastian Bergmann and contributors.
..
Time: 0 seconds
OK (2 tests, 2 assertions)
Когда приведенная выше команда вызывается, как показано, средство выполнения тестов командной строки PHPUnit будет искать файл `ArrayTest.php` в текущем рабочем каталоге, загружать его и ожидать, что в нем будет найден тестовый класс` ArrayTest`. Затем он выполнит тесты этого класса.
Для каждого выполненного теста инструмент командной строки PHPUnit использует один символ, чтобы указать ход выполнения теста. Некоторые из этих персонажей включают в себя:
- `.` Это печатается, когда тест завершается успешно.
- `F` Это означает, что утверждение не выполнено во время выполнения тестового метода.
- `E` Указывает на возникновение ошибки при выполнении тестового метода.
- `R` Печатается, когда тест помечен как рискованный.
- `S` Это печатается, когда тест был пропущен
- `I` Указывает, что тесты помечены как незавершенные или еще не выполненные.
PHPUnit различает сбои и ошибки. Сбой - это нарушенное утверждение PHPUnit, такое как неудачный вызов assertSame () `.
Ошибка - это непредвиденное исключение или ошибка PHP. Иногда это различие оказывается полезным, поскольку ошибки, как правило, легче исправить, чем ошибки.
# Параметры командной строки
В PHPUnit есть много параметров командной строки, разработанных для того, чтобы сделать тест PHPUnit простым и понятным. Команда `phpunit --help` предоставит вам полный список всех параметров командной строки PHPUnit, как показано ниже.
$ phpunit --help
PHPUnit | version | .0 Себастьян Бергманн и его участники.
Использование:
phpunit [параметры] UnitTest [UnitTest.php]
phpunit [опции] <каталог>
Варианты покрытия кода:
--coverage-clover <файл> | Генерация отчета о покрытии кода в формате Clover XML |
--coverage-crap4j <файл> | Создать отчет о покрытии кода в формате Crap4J XML |
--coverage-html <dir> | Создать отчет о покрытии кода в формате HTML |
--coverage-php <файл> | Экспортировать объект PHP_CodeCoverage в файл |
--coverage-текст = <файл> | Создать отчет о покрытии кода в текстовом формате По умолчанию: стандартный вывод |
--coverage-xml <dir> | Создать отчет о покрытии кода в формате PHPUnit XML |
- белый список <dir> | Белый список <dir> для анализа покрытия кода |
повреждают охват игнорируемые | Отключить аннотации для игнорирования покрытия кода |
--no-покрытие | Игнорировать конфигурацию покрытия кода |
--dump-xdebug-filter <file> | Создать скрипт для установки фильтра покрытия кода Xdebug |
Параметры ведения журнала:
--log-junit <файл> | Записать выполнение теста в формате JUnit XML в файл |
--log-teamcity <файл> | Записать выполнение теста в формате TeamCity в файл |
--testdox-html <file> | Записать гибкую документацию в формате HTML в файл |
--testdox-text <файл> | Записать гибкую документацию в текстовом формате в файл |
--testdox-xml <file> | Записать гибкую документацию в формате XML в файл |
--reverse-лист | Печать дефектов в обратном порядке |
Варианты выбора теста:
--filter <шаблон> | Фильтр, какие тесты для запуска |
--testsuite <имя, ...> | Фильтр для запуска тестового набора |
--группировать ... | Запускает тесты только из указанной группы |
--exclude-group ... | Исключить тесты из указанной группы (групп) |
--list-группы | Список доступных тестовых групп |
--list-люкс | Список доступных тестовых наборов |
--list-тесты | Список доступных тестов |
--list-tests-xml <file> | Список доступных тестов в формате XML |
--test-суффикс ... | Ищите только тест в файлах с указанным Индекс (ы). По умолчанию: Test.php, .phpt |
Параметры выполнения теста:
--dont-отчет-бесполезных-тесты | Не сообщайте об испытаниях, которые ничего не проверяют |
--strict охват | Будьте строги в использовании аннотаций @covers |
--strict глобальное состояние | Будьте строги в отношении изменений в глобальном состоянии |
--testdox-text <файл> | Записать гибкую документацию в текстовом формате в файл |
--testdox-xml <file> | Записать гибкую документацию в формате XML в файл |
--disallow тест-вывода | Будьте строги к выводу во время тестов |
--disallow-ресурсов использования | Будьте строги в использовании ресурсов во время небольших тестов |
--enforce-срок | Обеспечить ограничение по времени в зависимости от размера теста |
--default-временной предел = <сек> | Тайм-аут в секундах для тестов без @small, @medium или @large |
--disallow-ToDo-тесты | Disallow @ todo-аннотированные тесты |
--process-изоляция | Запустите каждый тест в отдельном процессе PHP |
--globals резервного копирования | Резервное копирование и восстановление $ GLOBALS для каждого теста |
--static резервного копирования | Резервное копирование и восстановление статических атрибутов для каждого теста |
--colors = <флаг> | Используйте цвета в выводе («никогда», «авто» или «всегда») |
--columns <n> | Количество столбцов, используемых для вывода прогресса |
Макс. столбцов | Использовать максимальное количество столбцов для вывода прогресса |
--stderr | Пишите в STDERR вместо STDOUT |
--stop-на-дефект | Остановить выполнение при первом не пройденном тесте |
--stop-на-ошибки | Остановить выполнение при первой ошибке |
--stop-на-недостаточности | Остановить выполнение при первой ошибке или ошибке |
--stop-на-предупреждения | Остановить выполнение при первом предупреждении |
--stop-на-рискованный | Остановить выполнение при первом рискованном тесте |
--stop-на-пропускаются | Остановить выполнение при первом пропущенном тесте |
--stop-на-неполный | Остановить выполнение при первом незавершенном тесте |
--fail-на-предупреждения | Относитесь к тестам с предупреждениями как к сбоям |
--fail-на-рискованный | Относитесь к рискованным тестам как к сбоям |
-v | --verbose | Вывод более подробной информации |
--debug | Показать отладочную информацию |
--loader <загрузчик> | Реализация TestSuiteLoader для использования |
--repeat <раз> | Запускает тест (ы) несколько раз |
--teamcity | Отчет о ходе выполнения теста в формате TeamCity |
--testdox | Отчет о ходе выполнения теста в формате TestDox |
--testdox-группа, | Включать только тесты из указанной группы |
--testdox-исключений-группа | Исключить тесты из указанной группы (групп) |
--printer <принтер> | Реализация TestListener для использования |
--resolve-зависимости | Разрешить зависимости между тестами |
--сортировать-с = <заказ> | Запускать тесты по порядку: по умолчанию | обратный | случайный | дефект | зависит |
--random порядка семян = <N> | Используйте конкретное случайное начальное число <N> для случайного порядка |
--cache-результат | Записать результат выполнения в кеш, чтобы включить упорядочивание тестов дефектов в первую очередь |
Параметры конфигурации:
--prepend <файл> | PHP-скрипт, который включен как можно раньше |
--bootstrap <файл> | PHP-скрипт, включенный до запуска тестов |
-c | --configuration <файл> | Чтение конфигурации из файла XML |
--no-конфигурации | Игнорировать файл конфигурации по умолчанию (phpunit.xml) |
--no-каротаж | Игнорировать конфигурацию регистрации |
--no-расширение | Не загружайте расширения PHPUnit |
--include-path <путь (и)> | Предварительно добавьте PHP include_path с заданными путями |
-d ключ [= значение] | Устанавливает значение php.ini |
--generate-конфигурации | Создать файл конфигурации с предлагаемыми настройками |
--cache-результат-файл == <FILE> | Укажите путь к кешу результата и имя файла |
Разные варианты:
-h | --help | Распечатывает эту информацию об использовании |
--версия | Печатает версию и выходит |
--atleast-версия <мин> | Проверяет, что версия больше мин и выходит |
--check-версия | Проверьте, является ли PHPUnit последней версией |
# Команды командной строки
`phpunit UnitTest`
Эта команда выполняет тесты, предоставляемые классом `UnitTest`. Ожидается, что этот класс будет объявлен в файле `UnitTest.php`.
UnitTest должен быть либо классом, который наследуется от PHPUnit / Framework / TestCase, либо классом, который предоставляет метод public static suite (), который возвращает объект `PHPUnit / Framework / Test`, например, экземпляром Класс PHPUnit / Framework / TestSuite.
`phpunit UnitTest UnitTest.php`
Запускает тесты, предоставляемые классом UnitTest. Ожидается, что этот класс будет объявлен в указанном исходном файле.
Некоторые необязательные флаги также могут быть переданы вышеупомянутой команде, некоторые из этих необязательных флагов:
`--coverage-clover`
Создает файл журнала в формате XML с информацией о покрытии кода для выполнения тестов.
Следует отметить, что эта функциональность доступна только в том случае, если установлены расширения tokenizer и Xdebug.
`--coverage-crap4j`
Создает отчет о покрытии кода в формате Crap4j. Эта функциональность также доступна только после установки расширений Tokenizer и Xdebug.
`--coverage-html`
Создает отчет о покрытии кода в формате HTML. Эта опция также работает, только если установлены расширения tokenizer и Xdebug.
`--coverage-php`
Это создает сериализованный объект PHP_CodeCoverage с информацией о покрытии кода.
Обратите внимание, что эта функция доступна только в том случае, если установлены расширения Tokenizer и Xdebug.
`--coverage-Text`
Создает файл журнала или вывод из командной строки в удобочитаемом формате с информацией о покрытии кода для запуска тестов. Эта функциональность доступна только в том случае, если установлены расширения tokenizer и Xdebug.
`--log-junit`
Создает файл журнала в формате JUnit XML для запуска тестов.
`--testdox-html` и` --testdox-text`
Создает гибкую документацию в формате HTML или обычном тексте для запускаемых тестов.
`--filter`
Запускает только тесты, имя которых соответствует заданному шаблону регулярного выражения. Если шаблон не заключен в разделители, PHPUnit будет заключать шаблон в разделители `/`.
Соответствующие имена тестов будут иметь один из следующих форматов:
`TestNameSpace / TestCaseClass :: testMethod`
Формат имени теста по умолчанию эквивалентен использованию магической константы `__METHOD__` внутри метода теста.
`TestNamespace / TestCaseClass :: testMethod с набором данных # 0`
Когда у теста есть поставщик данных, к каждой итерации данных добавляется текущий индекс, добавляемый в конец имени теста по умолчанию.
`TestNamespace / TestCaseClass :: testMethod с набором данных« мои именованные данные »`
Когда у теста есть поставщик данных, который использует именованные наборы, каждая итерация данных получает текущее имя, добавляемое в конец имени теста по умолчанию.
Фрагмент кода ниже иллюстрирует пример именованных наборов данных.
<?php
use PHPUnit\Framework\TestCase;
namespace TestNamespace;
class TestCaseClass extends TestCase
{
/**
* @dataProvider provider
*/
public function testMethod($data)
{
$this->assertTrue($data);
}
public function provider()
{
return [
'my named data' => [true],
'my data' => [true]
];
}
}
`/ путь / к / мой / test.php`
Имя теста для теста PHPUnit - это путь к файловой системе. Пример ниже иллюстрирует некоторые допустимые шаблоны фильтров.
--filter 'TestNamespace // TestCaseClass :: testMethod'
--filter 'TestNamespace // TestCaseClass'
--filter TestNamespace
--filter TestCaseClase
--filter testMethod
--filter '/ :: testMethod. * "Мои именованные данные" /'
--filter '/ :: testMethod. * # 5 $ /'
--filter '/ :: testMethod. * # (5 | 6 | 7) $ /'
Ярлыки также можно использовать для проверки наличия доступных поставщиков данных, примеры которых приведены ниже для некоторых ярлыков фильтров.
--filter 'testMethod # 2'
--filter 'testMethod # 2-4'
--filter '# 2'
--filter '# 2-4'
--filter ' [электронная почта защищена] именованные данные'
--filter ' [электронная почта защищена] * данные'
--filter '@my named data'
--filter '@ my. * data'
Предыдущая: Написание тестов для phpunit (исключения и ошибки)
Далее: Тестер командной строки (2)
Новый контент: Composer: менеджер зависимостей для PHP , R программирования