Почему PHPUnit показывает некоторые закрытые фигурные скобки как непокрытые?

Я использую PHPUnit 3.6.7, PHP_CodeCoverage 1.1.1 и Xdebug 2.1.2. Когда у меня PHPUnit записывает статистику покрытия кода в XML-файл в стиле клевера, он иногда показывает закрывающую фигурную скобку, которая не покрывается тестами.

Я вижу много дискуссий в Интернете о том, когда PHPUnit «достигает» закрывающих фигурных скобок, но я не понимаю общей концепции того, что происходит. Например, у меня здесь нулевое покрытие в одной строке:

if (is_array($foo)) {
    foreach ($foo as $bar) {
        if (property_exists($bar, 'baz')) {
            return $bar;
        }
    }
}  // this line has 0 coverage
return null;

А здесь:

class Foo
{
    public $myProperty;
    public function myMethod()
    {
        $this->myProperty = '1';
    }
}  // this line has 0 coverage

Другие классы в моем проекте не имеют этой проблемы; их закрытые фигурные скобки вообще не отображаются в файле XML, поэтому они не указаны как имеющие нулевое покрытие.

Я понимаю, что PHP_CodeCoverage 1.1.2 (еще не выпущенный) позволит мне поставить комментарий «// @codeCoverageIgnore» после закрывающей фигурной скобки, но пока это не будет доступно, я хочу знать, что происходит, чтобы я мог исправьте мои тесты, чтобы дать мне полное покрытие. Какое практическое правило подсказывает мне, когда фигурная скобка должна считаться «закрытой» или «непокрытой»?

6
задан Brian Kendig 11 January 2012 в 21:46
поделиться