2015-03-13 13 views
16

Próbuję ustawić pokrycie kodu dla phpunit dla określonego katalogu. Czy ktoś może mi powiedzieć jaka jest różnica pomiędzy:Pokrycie Phpunit: jaka jest różnica między opcjami "addUncoveredFilesFromWhitelist" i "processUncoveredFilesFromWhitelist"?

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

i

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

i

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

Obecnie pierwsze 2 opcje będą działać (z różnych numerów zasięgu), ale trzeci zawiedzie z błędami podobnymi do How to add uncovered files to PHPUnit code coverage report of the Yii application.

Po prostu zaczynając od phpunitu i chciałbyś zrozumieć różnice między tymi opcjami na białej liście. Czytałem oficjalnych dokumentów na ten temat, ale nie jestem pewien, czy rozumiem.

Odpowiedz

23

Szybkie zerknięcie w kodzie źródłowym php-code-coverage pakiet na GitHub ujawnia prawdę:

  • jeśli addUncoveredFilesFromWhitelist jest FALSE następnie pokrycie kodu zawiera informacje o plikach, które zostały załadowane i wykonane (uwzględnione są tylko linie zawierające kod); W tym przypadku wartość processUncoveredFilesFromWhitelist jest ignorowana;
  • jeśli addUncoveredFilesFromWhitelist jest TRUE następnie pliki z białej listy, które nie zostały załadowane i wykonane zostaną włączone do pokrycia kodu TOO:
    • jeśli processUncoveredFilesFromWhitelist jest FALSE następnie pliki nie są przetwarzane w jakikolwiek sposób; wszystkie ich linie pojawią się w zasięgu kodu, ponieważ nie są wykonywane, nawet puste linie i linie zawierające tylko komentarze; to szybki i brudny sposób na załatwianie spraw;
    • jeśli processUncoveredFilesFromWhitelist jest TRUE to pliki są dołączone, a funkcja pokrycia kodu XDebug jest używana (tak jak w przypadku plików, które faktycznie zostały uruchomione), aby umieścić w raporcie tylko wiersze zawierające kod; to jest powolny, pracowity sposób.

Domyślna wartość addUncoveredFilesFromWhitelist jest TRUE i processUncoveredFilesFromWhitelist jest FALSE. Oznacza to, że pliki z białej listy, które nie zostały pokryte (ponieważ nie zostały uruchomione) są uwzględniane w raporcie przy użyciu szybkiej metody i raportu zasięgu, natomiast dokładne (0%) są obliczane przy użyciu całkowitej liczby wierszy nieco większych niż ten prawdziwy.

Jednak od 0 z niczego jest nadal 0%, uważa się, że jest to najlepszy sposób na dołączenie nieprzykrytych plików do raportu.

+0

0 wierszy po 300 niepokrytych liniach oznaczałoby 0%, ale 0/300 wpływa na całkowitą liczbę linii, co może wynosić tylko 100 rzeczywistych wyciągów. Tym samym, zapewniając szybszy sposób zbierania statystyk zasięgu, zwiększa on błąd faktycznych statystyk zasięgu. –

+1

@EduardSukharev Nie stawiaj sobie za cel posiadania wysokiego zasięgu kodu, staraj się sprawdzić, czy zachowanie kodu pasuje do specyfikacji. Łatwo uzyskać zasięg kodu "100%", ale czy oznacza to, że kod został całkowicie przetestowany? – axiac

5

Więc myślę, że się myliłem. Oto co documentation ma do powiedzenia na ten temat:

Opcjonalnie wszystkie pliki z białej listy można dodać do raportu pokrycia kodu przez ustawienie addUncoveredFilesFromWhitelist = „true” w konfiguracji PHPUnit (patrz rozdział o nazwie „włączając i wyłączając Pliki dla zasięgu kodu "). Pozwala to na włączenie plików, które w ogóle nie są testowane. Jeśli chcesz na przykład uzyskać informacje o tym, które wiersze tego niepokrytego pliku są wykonywalne, musisz również ustawić processUncoveredFilesFromWhitelist = "true" w swojej konfiguracji PHPUnit (patrz sekcja "Włączanie i wyłączanie plików dla pokrycia kodu").

Więc odpowiedź jest taka, że ​​adding odsłonięte pliki obejmie je w raporcie pokrycia, ale faktycznie processing je zbierze dalszych informacji.

Original

Zobacz this twitter conversation od Sebastian. Trochę trudno to określić z punktu widzenia twittera, ale wygląda na to, że addUncoveredFilesFromWhitelist może być starszą formą o tej samej funkcjonalności, którą processUncoveredFilesFromWhitelist zapewnia dla starszego kodu.

Treść rozmowy Twitter jest:

@ user1: W @phpunit, jaka jest różnica między addUncoveredFilesFromWhitelist = "true" i processUncoveredFilesFromWhitelist = "true"?

@s_bergmann: Chcesz użyć processUncoveredFilesFromWhitelist.Jeśli to nie zadziała (kod starszego typu), a następnie użyć addUncoveredFilesFromWhitelist

Powiązane problemy