2015-03-13 2 views
16

Я пытаюсь настроить покрытие кода для phpunit для определенного каталога. Может кто-нибудь сказать мне, в чем разница между:Phpunit покрытие: в чем разница между опциями 'addUncoveredFilesFromWhitelist' и 'processUncoveredFilesFromWhitelist'?

<filter> 
    <whitelist> 
     <directory suffix=".php">lib/</directory> 
    </whitelist> 
</filter> 

и

<filter> 
    <whitelist addUncoveredFilesFromWhitelist="true"> 
     <directory suffix=".php">lib/</directory> 
    </whitelist> 
</filter> 

и

<filter> 
    <whitelist processUncoveredFilesFromWhitelist="true"> 
     <directory suffix=".php">lib/</directory> 
    </whitelist> 
</filter> 

В настоящее время первые 2 варианта будут работать (с разным количеством покрытия), но третий один с ошибками, аналогичными How to add uncovered files to PHPUnit code coverage report of the Yii application.

Просто начинайте с phpunit и хотите понять различия между этими параметрами белого списка. Я читал официальные документы об этом, но я не уверен, что понимаю.

ответ

23

Быстрый взгляд в исходном коде php-code-coverage пакета на GitHub раскрывает правду:

  • если addUncoveredFilesFromWhitelist является FALSE то покрытие кода содержит информацию о файлах, которые были загружены и выполнены (включены только строки, содержащие код);
    В этом случае игнорируется значение processUncoveredFilesFromWhitelist;
  • если addUncoveredFilesFromWhitelist является TRUE то файлы из белого списка, которые не были загружены и выполнены, будут включены в покрытие кода тоже:
    • если processUncoveredFilesFromWhitelist является FALSE то файлы не обрабатываются каким-либо образом; все их строки появятся в охвате кода как не исполняемые, даже пустые строки и строки, содержащие только комментарии; это быстрый и грязный способ добиться этого;
    • , если processUncoveredFilesFromWhitelist - TRUE, тогда файлы включены, а функциональность покрытия кода XDebug используется (так же, как и для фактически запущенных файлов), чтобы помещать в отчет только строки, содержащие код; это медленный рабочий процесс.

Значение по умолчанию для addUncoveredFilesFromWhitelist является TRUE и processUncoveredFilesFromWhitelist является FALSE. Это означает, что файлы из белого списка, которые не были охвачены (потому что они не запускались), включаются в отчет, используя быстрый способ и отчет о покрытии, а точный (0%) вычисляется с использованием общего количества строк, немного большего, чем настоящий.

Однако, поскольку 0 из чего-либо еще 0%, он считает, что это лучший способ включить непокрытые файлы в отчет.

+0

0 линий из 300 строк, открытых без брутто, приведет к 0%, но 0/300 влияет на общее количество строк, которое может быть всего 100 действительных утверждений. Таким образом, обеспечивая при этом более быстрый способ сбора статистики покрытия, он добавляет к ошибке фактической статистики покрытия. –

+1

@EduardSukharev Не ставьте целью иметь высокий охват кода, чтобы убедиться, что поведение кода соответствует спецификациям. Легко достигать «100%» охвата кода, но означает ли это, что код полностью протестирован? – axiac

5

Так что я думаю, что был неправ. Вот что documentation должен сказать об этом:

Необязательно все Whitelisted файлы могут быть добавлены к отчету покрытия кода, установив addUncoveredFilesFromWhitelist = «истина» в конфигурации PHPUnit (смотрите раздел «Включение и исключение файлов для покрытия кода "). Это позволяет включить файлы, которые еще не протестированы. Если вы хотите получить информацию о том, какие строки такого непокрытого файла исполняются, например, вам также необходимо установить processUncoveredFilesFromWhitelist = «true» в вашей конфигурации PHPUnit (см. Раздел «Включение и исключение файлов для покрытия кода»).

Таким образом, ответ в том, что adding непокрытые файлы будут включать их в докладе покрытия, но на самом деле processing они будут собирать дополнительную информацию.

Оригинал

См this twitter conversation от Себастьяна. Немного сложно сказать из-за тщеты twitter, но похоже, что addUncoveredFilesFromWhitelist может быть просто старой формой той же функциональности, что и processUncoveredFilesFromWhitelist обеспечивает устаревший код.

Содержание твиттер разговора:

@ user1: В @phpunit, в чем разница между addUncoveredFilesFromWhitelist = "истина" и processUncoveredFilesFromWhitelist = "истинный"?

@s_bergmann: Вы хотите использовать processUncoveredFilesFromWhitelist.Если он не работает (устаревший код), затем используйте addUncoveredFilesFromWhitelist

Смежные вопросы