Я занимаюсь созданием набора тестов для проекта, и, хотя я понимаю, что 100% охват не является метрикой, к которой нужно стремиться, есть странный бит в отчете о покрытии кода, которому я хотелось бы получить некоторые разъяснения.
Смотрите снимок экрана:
Поскольку последняя строка тестируемого метода равна return
, последняя строка (которая является только закрывающей скобкой) отображается как никогда не исполняемая, и, как следствие, весь метод помечен как не выполненный в Обзор. (Либо это, либо я не читаю отчет правильно.)
Полный метод:
static public function &getDomain($domain = null) {
$domain = $domain ?: self::domain();
if (! array_key_exists($domain, self::$domains)) {
self::$domains[$domain] = new Config();
}
return self::$domains[$domain];
}
Есть ли причина для этого, или это сбой?
(Да, я прочитал Как получить 100% покрытие кода с помощью PHPUnit, в другом случае, хотя и аналогичный.)
Изменить:
Просматривая отчет, я заметил, что то же самое верно для оператора switch
в другом месте кода. Таким образом, это поведение, по крайней мере, в некоторой степени непротиворечиво, но, тем не менее, озадачивает меня.
Edit2:
Я запускаю: PHPUnit 3.6.7, PHP 5.4.0RC5, XDebug 2.2.0-dev на OS X