Skip to content

PHP Unit

plankconstanta edited this page Apr 21, 2022 · 1 revision

Как проверить названия тестов (методов) на адекватность? Запустите ваш ./vendor/bin/phpunit добавив опцию --testdox

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

./vendor/bin/phpunit --generate-configuration

После запуска достаточно в интерактивном режиме указать путь к файлу автозагрузчика, директорию тестов и директорию приложения, команда сформирует вам тот самый phpunit.xml (http://img.netpeak.ua/genkovich/2021-03-27_8afce0.png) и заботливо положит в корень проекта.

❗️В одном из своих докладов, Себастиан Бергман признался, что создал эту команду только потому, что он ленивый и данные настройки сконфигурированы сугубо под его предпочтения. Именно поэтому, в случае генерации файла через команду, рекомендую вам обратить внимание на такие настройки:

beStrictAboutCoversAnnotation="true" beStrictAboutOutputDuringTests="true" beStrictAboutTodoAnnotatedTests="true"

которые, вероятно, могут расходиться с вашими предпочтениями.

  • forceCoversAnnotation — Покрытие кода будет записываться только для тестов, в которых используется аннотация @covers, задокументированная в @covers (https://phpunit.readthedocs.io/ru/latest/annotations.html#appendixes-annotations-covers).
  • beStrictAboutCoversAnnotation — Тест с аннотацией @covers, проверяющий код, который не указан при помощи @covers или @uses, будет отмечен как рискованный, если эта проверка включена.
  • Если по-русски, то эта функция пометит код, как рискованный, если в рамках своего теста вы будете проверять код, который не относится к указанному коду в аннотации @covers. Хз стало ли понятнее :)
  • beStrictAboutOutputDuringTests — Тест, который производит вывод, например, через вызов функции print либо в тестовом коде, либо в тестируемом, будет отмечен как рискованный, если эта проверка включена.
  • beStrictAboutTodoAnnotatedTests — Пометит тест, как рискованный, если в аннотации метода будет содержаться @todo.

Clone this wiki locally