Имейте в виду, что покрытие кода не является мерой того, насколько корректна ваша программа, и 100% покрытие не означает, что вы выполнили каждый путь кода. Например, троичный оператор
a ? b : c
и составные логические выражения
if (a < 1 || b > 6)
считается как отдельные операторы, даже если вы можете выполнить только их часть из-за короткого замыкания. Кроме того, опуская скобки вокруг блоков с одним оператором if
, while
и т. Д., Все превращается в один оператор.
Следующее будет отображаться как отдельный оператор в отчете о покрытии кода, поэтому вы не сможете определить, выполнили ли вы оба случая (true
и false
).
if (...)
foo();
Я чувствую, что
private final function __clone() { }
слишком просто, чтобы потерпеть неудачу. Проверка того, что метод генерирует исключение (с использованием отражения не меньше, чем ваши клиенты не сделают), - это проверка интерпретатора PHP вне моей области.
[Для справки, я тоже получаю небольшой OC, когда дело доходит до достижения 100% покрытия кода, но помнить вышеупомянутые факты помогает облегчить его, чтобы я мог перейти к написанию лучшего кода.]