Командная строка в PHPUnit

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

При вызове, как показано выше, команда будет искать исходный файл ArrayTest.php в текущем рабочем каталоге, загрузит его и будет искать тесты в классе ArrayTest. Затем он выполнит тесты этого класса.

Для каждого запуска инструмент командной строки PHPUnit печатает один символ для указания прогресса:

.

когда тест завершается успешно.

F

когда утверждение не выполняется при запуске метода тестирования.

E

при возникновении ошибки при запуске метода тестирования.

R

когда тест был отмечен как опасный (см. Рискованные тесты).

S

при пропуске теста (см. «Незавершенные и пропущенные тесты»).

I

когда тест отмечен как неполный или еще не реализованный (см. «Незавершенные и пропущенные тесты»).

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

Опции командной строки

Давайте посмотрим на параметры командной строки:

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 and —testdox-text

Создает гибкую документацию в формате HTML или в обычном текстовом формате для запуска тестов (см. TestDox).

—filter

Выполняет только тесты, имя которых соответствует заданному шаблону регулярного выражения. Если шаблон не заключен в разделители, PHPUnit будет заключать шаблон в / разделители.

Имена тестов для соответствия будут в одном из следующих форматов:

TestNamespace\TestCaseClass::testMethod

Формат имени теста по умолчанию эквивалентен использованию магической константы __METHOD__ внутри метода тестирования.

TestNamespace\TestCaseClass::testMethod with data set #0

Когда в тесте есть поставщик данных, каждая итерация данных получает текущий индекс, добавляемый к концу имени теста по умолчанию.

TestNamespace\TestCaseClass::testMethod with data set «my named data»

Когда в тесте есть поставщик данных, который использует именованные наборы, каждая итерация данных получает текущее имя, добавленное к концу имени теста по умолчанию. См. Пример 3.1 для примера названных наборов данных.

Пример 3.1 Именованные наборы данных

Имя теста для теста PHPT — путь к файловой системе.
См. Пример 3.2  допустимые шаблонов фильтров.

Пример 3.2 Допустимые шаблонов фильтров

См. Пример 3.3 сокращения в фильтрах, доступных для сопоставления поставщиков данных.

Пример 3.3. Сокращения в фильтрах

--testsuite

Выполняется только тестовый набор, чье имя соответствует заданному шаблону.

--group

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

Аннотации @author и @ticket — это псевдонимы для @group, позволяющие фильтровать тесты на основе их авторов или их идентификаторов билетов соответственно.

--exclude-group

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

--list-groups

Список доступных тестовых групп.

--test-suffix

Только поиск тестовых файлов с указанными суффиксами.

--dont-report-useless-tests

Не отображать тесты, которые ничего не тестируют. Подробнее см. Рискованные тесты.

--strict-coverage

Строгая проверка относительно непреднамеренно охваченного кода. Подробнее см. Рискованные тесты.

--strict-global-state

Стрикт мод для манипуляций над глобальным состоянием. Подробнее см. Рискованные тесты.

--disallow-test-output

Стрикт мод по отношению к результатам возращаемым тестами.

--disallow-todo-tests

Не выполняет тесты с аннотацией @todo в своем докблоке.

--enforce-time-limit

Установите ограничение по времени на основе размера теста. Подробнее см. Рискованные тесты.

--process-isolation

Запускает каждый тест в отдельном PHP-процессе.

--no-globals-backup

Не копирует и не восстанавливайте $GLOBALS. См. Глобальное состояние для получения более подробной информации.

--static-backup

Резервное копирование и восстановление статических атрибутов пользовательских классов. См. Глобальное состояние для получения более подробной информации.

--colors

 

Используйте цвета в выводе. В Windows используйте ANSICON или ConEmu.

Существует три возможных значения для этого параметра:

  • never: никогда не отображает цвета в выводе. Это значение по умолчанию, когда --colors опция не используеться.
  • auto: отображает цвета в выводе, если текущий терминал не поддерживает цвета, или если вывод передан в команду или перенаправлен в файл.
  • always: всегда отображает цвета, даже если текущий терминал не поддерживает цвета, или когда вывод передается в команду или перенаправляется в файл.

Когда опция --colors используеться без значения, auto будет выставлен по умолчанию.

--columns

Определяет количество столбцов для вывода результатов. Если max определяется как значение, количество столбцов будет максимальным для текущего терминала.

--stderr

Опциональная печатать в STDERR вместо STDOUT.

--stop-on-error

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

--stop-on-failure

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

--stop-on-risky

Прекратить выполнение при первом рискованном тестировании.

--stop-on-skipped

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

--stop-on-incomplete

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

--verbose

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

--debug

Вывод отладочной информации, такой как имя теста при его запуске.

--loader

Указывает реализацию PHPUnit\Runner\TestSuiteLoader.

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

--repeat

Неоднократно выполнять тест(ы) указанного количества раз.

--testdox

Сообщает о ходе тестирования в формате TestDox (см. TestDox).

--printer

Указывает используемый принтер результатов. Класс принтера должен расширять PHPUnit\Util\Printer и реализовывать интерфейс PHPUnit\Framework\TestListener.

--bootstrap

«Загрузочный» PHP-файл, который запускается перед тестированием.

--configuration, -c

 

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

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

--no-configuration

Пропустить phpunit.xml и phpunit.xml.dist в текущей рабочей директории

--include-path

Подготовить PHP include_path с заданным путем (-ами).

-d

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

Обратите внимание, что начиная с 4.8 параметры могут быть заданы после аргументов.

TestDox

Функционал TestDox просматривает тестовый класс и все имена методов тестирования и преобразует их из имен camelCase (или snake_case) в предложения: testBalanceIsInitiallyZero() (или test_balance_is_initially_zero() становится «Изначально нулевой баланс» .Если есть несколько методов, имена которых отличаются только суффиксом одной или нескольких цифр, например testBalanceCannotBecomeNegative() и testBalanceCannotBecomeNegative2(), предложение «Баланс не может стать отрицательным» появится только один раз, предполагая, что все эти тесты будут успешными.

Давайте посмотрим на документацию, созданную для класса BankAccount:

В качестве альтернативы, гибкая документация может быть сгенерирована в формате HTML или обычного текста и записана в файл с использованием аргументов —testdox-html и —testdox-text.

Agile Documentation может использоваться для документирования допущений, которые делаете о внешних пакетах, которые используете в своем проекте. Когда вы используете внешний пакет, вы подвергаетесь рискам, что пакет не будет вести себя так, как вы ожидаете, и что будущие версии пакета будут изменяться такими способами, которые нарушают ваш код, не зная об этом. Вы можете устранить эти риски, написав тест каждый раз, когда вы делаете предположение. Если ваш тест будет успешным, ваше предположение будет действительным. Если вы документируете все свои предположения с помощью тестов, будущие выпуски внешнего пакета не будут вызывать беспокойства: если тесты будут успешными, ваша система должна продолжать работать.

 

https://phpunit.readthedocs.io/ru/latest/textui.html

Leave a Reply

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.