Ответ 1
В соответствии с этим (1.4.0) он еще не поддерживает покрытие кода. Приятно слышать ваши отзывы об этом. Ниже мое мнение о охвате кода.
PHPSpec является базой BDD. Если вы делали BDD, вы бы описали поведение своего класса перед написанием своего класса. Если бы вы сделали это, то соответствующее поведение ваших классов было бы должным образом покрыто "тестами".
Инструменты и показатели покрытия кода полезны для устаревшего кода (код, который вы написали, без спецификаций/тестов). Вы можете использовать такой инструмент, чтобы попытаться приблизиться к точке, где вы можете продолжить TDD и иметь преимущество от защиты от регрессии.
В целом этот подход не так эффективен, как описание поведения в первую очередь (TDD). Один метод может быть достаточно простым, чтобы реагировать на более чем одно обязательное поведение. Вы знаете, что когда вы TDDing, вы продолжаете рефакторинг в процессе, удаляя ненужный код. Вы получаете 10 спецификаций (тестов), попадающих в одни и те же строки кода, описывающие различное поведение, полезное для понимания кода.
Одна из проблем со словом "тест" заключается в том, что люди думают, что TDD - это проверка. Не это. Это о связи. StoryBDD - это связь между заинтересованными сторонами, а SpecBDD - это общение между классами. Простой, живой, достаточно документации.
Кодовый охват, сделанный для гарантии того, что вы протестировали свой код, является ошибкой, в лучшем случае, плохим показателем. К сожалению, люди считают, что структура тестирования важнее, чем тестирование поведения. Вот почему родился BDD, чтобы помочь вернуть фокус на правильный путь. Убедиться, что эта часть кода протестирована, является поддельной, потому что эта часть кода может делать несколько вещей, она должна, если она будет хорошо реорганизована. Кроме того, вы будете испытывать такие вещи, как аксессоры, модификаторы и конструкторы и т.д.
Но я открыт, чтобы услышать об этом сообщество. Я могу видеть, где Code Coverage может быть полезным. Плюс, так как Себастьян Бергманн прекрасно модулировал его из PHPUnit, я мог бы его повторно использовать в PHPSpec. Я бы предпочел, чтобы вы сначала написали свои спецификации. Вы бесплатно получаете 100% -ное покрытие кода вашего соответствующего поведения. По моему мнению, это важно по большей части.