Обновить

Комментарии 7

Решительно плевать на метрику покрытия, в петах использую чтобы из теста быстро проваливаться в реализацию и обратно (`@covers`/`covered-by`).

Аналогично с event/eventListener (`@uses`/`used-by`)

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

  1. Вы создаете отдельный тест на каждый метод. Отлично.

  2. Чтобы быстро перейти к контроллеру вы вместо see написали covers и не используете его. Сомнительно, но окей.

  3. При этом covers у тебя лежит всегда в шапке класса, а see ты можешь воткнуть в каждую строчку.

  4. Если твой тест раздут на 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, только сделав нерабочей его главную фичу.

Во время тестов покрытие не важно. Да и метрика эта коварная. Но что может быть приятнее, чем в конце трудового дня полюбоваться на эти цифорки и полоски? И почему туда не должны попасть хелперы - они что, рыжие? Так сразу видно, какой код в них участвует в реальном флоу, а не просто место занимает.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации