Комментарии 7
Решительно плевать на метрику покрытия, в петах использую чтобы из теста быстро проваливаться в реализацию и обратно (`@covers`/`covered-by`).
Аналогично с event/eventListener (`@uses`/`used-by`)
Вы создаете отдельный тест на каждый метод. Отлично.
Чтобы быстро перейти к контроллеру вы вместо see написали covers и не используете его. Сомнительно, но окей.
При этом covers у тебя лежит всегда в шапке класса, а see ты можешь воткнуть в каждую строчку.
Если твой тест раздут на 3000 строк. Каждый раз идти в шапку, перейти «быстро» в метод (ура, то что нужно), а потом вернуться обратно в тест?
Каждый др..ит как хочет. Если вам так удобно - круто!
Всё так :)
По-хорошему, когда над классом воткнут CoversMethod, то IDE должно само возле каждого тестового метода выводить ссылки для перехода. Надеюсь к этому всё и придет (https://youtrack.jetbrains.com/issue/WI-84302/PHPUnit.-Display-links-to-covered-code-when-using-Covers-attributes). А до тех пор, подняться вверх через Ctrl+Home не так уж долго. И сделать это надо только один раз в рамках сессии, потом вкладка с кодом уже открыта.
Кроме того, будем честны, раздутые тесты - роскошь. И для этого скорее всего захочется выделить несколько тестовых классов на один метод. Или изменить архитектуру. Обычно 2-3 метода внутри тестового класса - уже за счастье.
Подъехал фидбек от JetBrains. Оказывается, уже можно проваливаться в тестируемый класс (Ctrl + Shift + T, либо через контекстное меню Go To -> Test Subject): https://youtrack.jetbrains.com/issue/WI-84302/PHPUnit-Make-it-possible-to-navigate-to-the-specific-method-via-CoversMethod#focus=Comments-27-13552145.0-0
Обновил статью. Наглядная демонстрация того, что специализированная метка - рулит) И того, что PhpStorm разрабы не такие негодяи, как я иногда их пытаюсь представить) Что ж, мечты сбываются, был не прав, признаю!
Автор phpunit просто закрыл связанное с этим issue, не ответив ни на один последовавший за этим вопрос :(
Ха-ха, классика. Именно поэтому я и запилил https://php-testo.github.io/ru/ (на днях будет бетка, кстати). Там я устраняю разные отвратительные моменты pUnit и Pest, так что по желанию присоединяйтесь к обсуждению или разработке.
Главный изъян covers ... он был создан для того, чтобы обрезать тестовое покрытие!
Это же его фича. Т.е. этот атрибут/аннотация и был создан, чтобы ограничивать скоуп теста.
Когда вы тестируете логику контроллера, вам скорее всего не нужны в отчётах покрытия всякие хелперы. Чем это полезно? Да просто всякие тестировщики мутаций будут работать быстрее: не будут запускать тесты контроллеров, если мутируют хелпер.
Однако, если бюджет на тестирование урезан, каждый мелкий юнит не покрыт индивидуальным тестом, и мутациями вы не пользуетесь, вам атрибуты Covers будут только вредить.
Именно поэтому я и запилил https://php-testo.github.io/ru/
Ого, выглядит вдохновляюще, респект!
Это же его фича.
В этом и соль :) Хочется работать с coverage, только сделав нерабочей его главную фичу.
Во время тестов покрытие не важно. Да и метрика эта коварная. Но что может быть приятнее, чем в конце трудового дня полюбоваться на эти цифорки и полоски? И почему туда не должны попасть хелперы - они что, рыжие? Так сразу видно, какой код в них участвует в реальном флоу, а не просто место занимает.

PHPUnit: рабочий нерабочий covers