Напомню, что мутационное тестирование — это отличный способ убедиться в том, что написанные тесты – говно и ничего не тестируют даже при 100% покрытии.
Infection теперь поддерживает кастомные мутаторы. Вероятно, это будет полезно только авторам каких нибудь популярных пакетов. Для меня же это просто повод упомянуть крутой инструмент.
В PEST 3 будет мутационное тестирование. Нуно пишет, что наговнокодили его с нуля, а не обернули infection/infection
.
Сам я кое где использую pest из-за плагина arch
, чтобы в CI проверять не забыл ли убрать все trap()
/dump()
/etc из кода (пример). Если мутации в нём будут удобнее инфекций или покрывать больше кейсов, то их тоже буду использовать.
В базе pest — это враппер вокруг phpunit
с некоторыми надстройками и своими плагинами. Несмотря на то, что по команде vendor/bin/pest
запустятся и тесты phpunit
, использовать его я всё-таки рекомендую отдельно и только в тех местах, которые не покрываются phpunit'ом.
Вот почему:
Не работают фичи типа runInSeparateProcess
.
На вкус и цвет, как говорится, но pest предлагает отвратительный синтаксис юнитов:
Скуфу не нравится синтаксис песта
Плохо поддерживается IDE. Наличие плагина не спасет: запустить какой-то один тест из интерфейса PHP Storm не получится.
Даже прыгнуть к сорцам не предлагает
В общем, если ты не скуф, тебе нравится розовый или просто нужны какие-то фичи песта, вот короткий гайд, чтобы не наступать на грабли:
Раскидать тесты по папкам.
Сделать копию конфига phpunit.xml.dist
, обозвать pest.xml.dist
и удалить из него всё лишнее. Да, это обособленный конфиг для pest, иначе он нам всё испортит.
Разделить на testsuites
. Например phpunit
будет запускать Feature
и Unit
тесты, ведь в этом плане он нас полностью устраивает:
phpunit.xml.dist
Pest-specific тесты (Arch
) закинуть в pest.xml.dist
.
./vendor/bin/pest --color=always --configuration pest.xml.dist