Я читал отчет о покрытии кода моего проекта и заметил кое-что странное: строка была обнаружена, но я был уверен, что эта строка была выполнена во время тестов.Итак, я добавил var_dump () перед ним, и вот что я получил при выполнении тестов:
bool(true)
PHPUnit 3.5.5 by Sebastian Bergmann.
...
Это странно.Как это возможно, что строка выполняется до инициализации PHPUnit?Я полагаю, что именно по этой причине покрытие кода говорит о том, что строка не обнаружена.
Есть какие-нибудь подсказки?
РЕДАКТИРОВАТЬ: Вот код.Это среда IRC, которая использует общую библиотеку Doctrine для чтения аннотаций, а также использует компоненты ClassLoader и EventDispatcher Symfony.Это инкриминируемый метод:
/**
* Returns this module's reflection.
*
* @return \ReflectionClass
* @access public
*/
static public function getReflection()
{
// The var_dump() displaying bool(false) is executed before PHPUnit, while the other
// ones are correctly executed.
var_dump(is_null(self::$reflection));
if (null === self::$reflection) {
// This line is reported as uncovered, but it must be executed since I'm
// accessing the reflection!
self::$reflection = new \ReflectionClass(get_called_class());
}
return self::$reflection;
}
Что вы думаете?