{"id":230141,"date":"2022-12-05T18:14:00","date_gmt":"2022-12-05T15:14:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230141"},"modified":"2022-11-09T20:16:32","modified_gmt":"2022-11-09T17:16:32","slug":"kiedy-clovercoverage-zawodzi-i-przechodzi-jednoczesnie","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/kiedy-clovercoverage-zawodzi-i-przechodzi-jednoczesnie\/","title":{"rendered":"Kiedy CloverCoverage zawodzi i przechodzi jednocze\u015bnie"},"content":{"rendered":"\n<p>W <strong><a href=\"https:\/\/tommcfarlin.com\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">poprzednich postach<\/a><\/strong> pisa\u0142em o zaletach korzystania z <strong><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/strong>. Jednym z narz\u0119dzi, kt\u00f3rych u\u017cywali\u015bmy w projektach przez ostatni rok lub d\u0142u\u017cej, jest <strong><a href=\"https:\/\/confluence.atlassian.com\/clover\/about-code-coverage-71599496.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Clover<\/a><\/strong>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c1715af.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c1715af.jpg\" alt=\"Kiedy CloverCoverage zawodzi i przechodzi jednocze\u015bnie\" ><\/a><\/p>\n<p>Zdj\u0119cie: Quentin REY na Unsplash<\/p>\n<p>Jaki\u015b czas mi\u0119dzy tym, kiedy zacz\u0119li\u015bmy go u\u017cywa\u0107, a tym tygodniem, zawsze nie dzia\u0142a\u0142 na moim lokalnym komputerze, ale nie na komputerze, na kt\u00f3rym wdra\u017cali\u015bmy nasz kod.<\/p>\n<p>I nie, nie by\u0142o to spowodowane nieprawid\u0142owymi dyrektywami lub komentarzami w testach jednostkowych i nie by\u0142o to spowodowane b\u0142\u0119dn\u0105 konfiguracj\u0105 <strong><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPUnit<\/a><\/strong> (wykonywa\u0142 wszystkie testy i raportowa\u0142 je zgodnie z oczekiwaniami).<\/p>\n<p>Wi\u0119c co daje?<\/p>\n<h2>Kiedy CloverCoverage zawodzi<\/h2>\n<p>Wersja TL; DR tego:<\/p>\n<p>Musisz mie\u0107 poprawnie zainstalowany <strong><a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a><\/strong>, poniewa\u017c CloverCoverage wymaga sterownika \u2013 czyli Xdebug \u2013 do poprawnego dzia\u0142ania. Problem polega na tym, \u017ce je\u015bli u\u017cywasz <strong><a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Homebrew<\/a><\/strong>, nie mo\u017cesz go zainstalowa\u0107 tak, jak kiedy\u015b.<\/p>\n<p>Pozosta\u0142a cz\u0119\u015b\u0107 tego postu przeprowadzi Ci\u0119 przez instalacj\u0119 Xdebug, poprawn\u0105 konfiguracj\u0119 w ramach Twojej konfiguracji PHP, ustawienie poprawnej konfiguracji PHPUnit, a nast\u0119pnie sprawdzenie wszystkich sprawdze\u0144, aby przy nast\u0119pnym uruchomieniu GrumPHP wszystkie zielone znaczniki wyboru .<\/p>\n<p>A jako dodatkowy bonus, nast\u0119pnym razem, gdy uruchomisz PHPUnit, powiniene\u015b otrzyma\u0107 \u0142adnie wygl\u0105daj\u0105cy raport, kt\u00f3ry b\u0119dzie do tego pasowa\u0142. Oto, co musisz zrobi\u0107.<\/p>\n<p>Po pierwsze, zauwa\u017c, \u017ce jest to oparte na za\u0142o\u017ceniu, \u017ce jeste\u015b:<\/p>\n<ul>\n<li>przy u\u017cyciu Homebrew,<\/li>\n<li>mie\u0107 zainstalowany PHPUnit,<\/li>\n<li>mie\u0107 zainstalowane PHP 7.1 (w momencie pisania tego postu u\u017cywam PHP 7.1.19),<\/li>\n<li>nie dzia\u0142aj\u0105 poprawnie Clover.<\/li>\n<\/ul>\n<p>Aby zweryfikowa\u0107 kilka rzeczy, uruchom nast\u0119puj\u0105ce polecenie <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-00-phpunit-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">w terminalu<\/a><\/strong> :<\/p>\n<p>Upewnij si\u0119, \u017ce u\u017cywasz przynajmniej PHPUnit 7.1.4.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c3ef638.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c3ef638.png\" alt=\"Kiedy CloverCoverage zawodzi i przechodzi jednocze\u015bnie\" ><\/a><\/p>\n<p>Nast\u0119pnie <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-01-php-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sprawd\u017a swoj\u0105 wersj\u0119 PHP<\/a><\/strong> :<\/p>\n<p>I upewnij si\u0119, \u017ce u\u017cywasz co najmniej PHP 7.1.19 (Twoje dane wyj\u015bciowe nie wygl\u0105daj\u0105 dok\u0142adnie tak, jak moje, zw\u0142aszcza \u017ce odnosi si\u0119 do Xdebug, ale o to w\u0142a\u015bnie chodzi).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c6881a9.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c6881a9.png\" alt=\"Kiedy CloverCoverage zawodzi i przechodzi jednocze\u015bnie\" ><\/a><\/p>\n<p>W tym momencie jeste\u015bmy gotowi do zainstalowania Xdebug i rozpocz\u0119cia niezb\u0119dnych zmian w konfiguracji.<\/p>\n<h3>1 Zainstaluj Xdebug<\/h3>\n<p>Powodem, dla kt\u00f3rego musimy zainstalowa\u0107 Xdebug inaczej ni\u017c wcze\u015bniej, jest to, \u017ce nie jest on ju\u017c obs\u0142ugiwany przez Homebrew. Bez obaw, poniewa\u017c instalacja jest r\u00f3wnie \u0142atwa dzi\u0119ki <strong><a href=\"https:\/\/pecl.php.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pecl<\/a><\/strong>.<\/p>\n<p>Aby go zainstalowa\u0107, wprowad\u017a <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-02-install-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nast\u0119puj\u0105ce polecenie<\/a><\/strong> w swoim terminalu:<\/p>\n<p>Powiniene\u015b wtedy zobaczy\u0107 komunikat, \u017ce zosta\u0142o zainstalowane i \u017ce rozszerzenie zosta\u0142o dodane do twojego pliku konfiguracyjnego PHP. Z mojego do\u015bwiadczenia wynika, \u017ce \u200b\u200bPecl nie radzi sobie z tym ostatnim krokiem.<\/p>\n<h3>2 Znajd\u017a plik binarny Xdebug na dysku<\/h3>\n<p>Aby rozwi\u0105za\u0107 ten problem, musimy:<\/p>\n<ol>\n<li>zlokalizuj pe\u0142n\u0105 \u015bcie\u017ck\u0119 rozszerzenia Xdebug,<\/li>\n<li>umie\u015b\u0107 w pe\u0142ni kwalifikowan\u0105 \u015bcie\u017ck\u0119 do rozszerzenia w naszym pliku konfiguracyjnym PHP<\/li>\n<\/ol>\n<p>Aby znale\u017a\u0107 \u015bcie\u017cki, w kt\u00f3rych mo\u017ce znajdowa\u0107 si\u0119 Xdebug, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-04-find-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">u\u017cyj nast\u0119puj\u0105cego polecenia<\/a><\/strong> :<\/p>\n<p>Mo\u017cesz zwr\u00f3ci\u0107 kilka \u015bcie\u017cek (najlepiej jednak, gdyby\u015b otrzyma\u0142 tylko jedn\u0105). Je\u015bli otrzymasz wi\u0119cej ni\u017c jeden, poszukaj tego zainstalowanego w \u015bcie\u017cce zawieraj\u0105cej katalog Pecl. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-05-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Prawdopodobnie b\u0119dzie wygl\u0105da\u0107 mniej wi\u0119cej tak<\/a><\/strong> :<\/p>\n<pre><code>\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so<\/code><\/pre>\n<p>Gdy otrzymasz list\u0119 wszystkich miejsc\u00a0, w kt\u00f3rych zainstalowany jest <strong>Xdebug.so<\/strong>, skopiuj \u015bcie\u017ck\u0119 do pliku, aby\u015bmy mogli skonfigurowa\u0107 PHP tak, aby si\u0119 do niego odwo\u0142ywa\u0142 i u\u017cywa\u0142 go poprawnie.<\/p>\n<h3>3 Zaktualizuj konfiguracj\u0119 PHP<\/h3>\n<p>Nast\u0119pnie musimy zaktualizowa\u0107 konfiguracj\u0119 PHP. Jest to \u0142atwe, poniewa\u017c wystarczy doda\u0107 pojedyncz\u0105 lini\u0119 do pliku PHP.ini. Oczywi\u015bcie, je\u015bli masz uruchomionych wiele wersji PHP, upewnienie si\u0119, \u017ce dodasz to do w\u0142a\u015bciwego pliku konfiguracyjnego, b\u0119dzie zale\u017ca\u0142o od u\u017cywanej wersji PHP.<\/p>\n<p>Je\u015bli masz wiele wersji PHP dzia\u0142aj\u0105cych na swoim komputerze, b\u0119dziesz mie\u0107 wiele wersji pliku konfiguracyjnego PHP. Je\u015bli masz zainstalowan\u0105 jedn\u0105 wersj\u0119, b\u0119dziesz mie\u0107 pojedynczy plik <strong>php.ini .<\/strong><\/p>\n<p>Zwykle znajduje si\u0119 w <strong>\/usr\/local\/etc\/php\/7.1\/<\/strong> jako <strong>php.ini\u00a0<\/strong>, je\u015bli u\u017cywasz PHP 7.1, ale Twoja lokalizacja mo\u017ce by\u0107 nieco inna. Ale kolejny krok pozostaje taki sam.<\/p>\n<p>Gdy to zrobisz, upewnij si\u0119, \u017ce doda\u0142e\u015b nast\u0119puj\u0105cy wiersz do pliku <strong>php.ini\u00a0 .<\/strong> Mo\u017ce to by\u0107 w ka\u017cdym miejscu w pliku, ale pami\u0119taj, \u017ce musisz do\u0142\u0105czy\u0107 w pe\u0142ni kwalifikowan\u0105 \u015bcie\u017ck\u0119 do Xdebug.so. Plik powinien wi\u0119c <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-06-php-ini\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">zawiera\u0107 ten wiersz<\/a><\/strong> :<\/p>\n<pre><code>zend_extension=\"\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so\"<\/code><\/pre>\n<p>Stamt\u0105d wszystko powinno dzia\u0142a\u0107. Mo\u017cesz to sprawdzi\u0107 <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-07-verify-xdebug-installation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">, uruchamiaj\u0105c<\/a><\/strong> :<\/p>\n<p>A potem powiniene\u015b zobaczy\u0107 nast\u0119puj\u0105cy komunikat:<\/p>\n<blockquote>\n<p>PHP 7.1.19 (cli) (zbudowany: 25 czerwca 2018 10:42:21) (NTS )<br \/>\nCopyright (c) 1997-2018 The PHP Group<br \/>\nZend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies<br \/>\nz Xdebug v2 .6.0, Copyright (c) 2002-2018, Derick Rethans<br \/>\nz Zend OPcache v7.1.19, Copyright (c) 1999-2018, Zend Technologies<\/p>\n<\/blockquote>\n<p>Zwr\u00f3\u0107 uwag\u0119 na czwart\u0105 lini\u0119, kt\u00f3ra zawiera uwag\u0119 o Xdebug. Je\u015bli to widzisz, mo\u017cesz i\u015b\u0107.<\/p>\n<h3>4 Konfiguracja PHPUnit<\/h3>\n<p>W tym momencie ostatni\u0105 rzecz\u0105, kt\u00f3r\u0105 musisz zrobi\u0107, jest upewnienie si\u0119, \u017ce plik phpunit.xml jest poprawnie skonfigurowany. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-08-phpunit-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Oto prosty przyk\u0142ad<\/a><\/strong> tego, jak wygl\u0105da moja (w tym wsparcie dla Clover):<\/p>\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n\n&lt;!-- http:\/\/phpunit.de\/manual\/4.1\/en\/appendixes.configuration.html --&gt;\n&lt;phpunit xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n         xsi:noNamespaceSchemaLocation=\"http:\/\/schema.phpunit.de\/4.1\/phpunit.xsd\"\n         bootstrap=\".\/tests\/bootstrap.php\"\n         backupGlobals=\"false\"\n         colors=\"true\"\n         convertErrorsToExceptions=\"true\"\n         convertNoticesToExceptions=\"true\"\n         convertWarningsToExceptions=\"true\"\n&gt;\n  &lt;testsuites&gt;\n    &lt;testsuite name=\"Plugin\"&gt;\n      &lt;directory&gt;.\/tests&lt;\/directory&gt;\n      &lt;exclude&gt;.\/tests\/phpunit&lt;\/exclude&gt;\n      &lt;exclude&gt;.\/src\/WordPress\/*.php&lt;\/exclude&gt;\n    &lt;\/testsuite&gt;\n  &lt;\/testsuites&gt;\n\n  &lt;logging&gt;\n    &lt;log type=\"coverage-clover\" target=\".\/coverage-report\/coverage.xml\"&gt;&lt;\/log&gt;\n    &lt;log type=\"coverage-html\" target=\"coverage-report\" lowUpperBound=\"30\" highLowerBound=\"80\"&gt;&lt;\/log&gt;\n    &lt;log type=\"coverage-text\" target=\"php:\/\/stdout\" showUncoveredFiles=\"false\"&gt;&lt;\/log&gt;\n  &lt;\/logging&gt;\n\n  &lt;filter&gt;\n    &lt;whitelist&gt;\n      &lt;directory&gt;.\/src&lt;\/directory&gt;\n    &lt;\/whitelist&gt;\n  &lt;\/filter&gt;\n&lt;\/phpunit&gt;<\/code><\/pre>\n<p>Nast\u0119pnie mo\u017cesz r\u0119cznie uruchomi\u0107 PHPUnit i zobaczy\u0107 \u0142adny wynik pokrycia kodu.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c93ef83.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c93ef83.png\" alt=\"Kiedy CloverCoverage zawodzi i przechodzi jednocze\u015bnie\" ><\/a><\/p>\n<p>Mo\u017cesz te\u017c uruchomi\u0107 GrumPHP, aby zobaczy\u0107 sta\u0142y zielony znacznik wyboru (zak\u0142adaj\u0105c, \u017ce twoje testy mieszcz\u0105 si\u0119 w zakresie zdefiniowanym w <strong>grump.yml<\/strong> ).<\/p>\n<h2>Wynik ko\u0144cowy<\/h2>\n<p>Chocia\u017c mo\u017ce si\u0119 wydawa\u0107, \u017ce jest to wiele krok\u00f3w (i przypuszczam, \u017ce tak), nie zajmuje du\u017co czasu, aby uzyska\u0107 t\u0119 konfiguracj\u0119 i dzia\u0142a\u0107 poprawnie. Mamy nadziej\u0119, \u017ce powy\u017cszy przewodnik pozwoli Ci zaoszcz\u0119dzi\u0107 troch\u0119 czasu podczas pracy z PHP, PHPUnit i tak dalej, gdy CloverCoverage zawiedzie (i uda si\u0119 jednocze\u015bnie podczas ci\u0105g\u0142ego wdra\u017cania).<\/p>\n<p>Obecnie pisz\u0119 e-booka (wraz z wieloma innymi tre\u015bciami premium). Je\u015bli jeste\u015b zainteresowany, <a href=\"https:\/\/tommcfarlin.com\/registration-info\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sprawd\u017a co otrzymujesz<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Poni\u017cszy przewodnik powinien zaoszcz\u0119dzi\u0107 troch\u0119 czasu podczas pracy z PHP, PHPUnit itd., gdy CloverCoverage nie powiedzie si\u0119 (i uda si\u0119 jednocze\u015bnie podczas ci\u0105g\u0142ego wdra\u017cania), aby\u015b wiedzia\u0142, co robisz, aby PHPUnit i Clover dzia\u0142a\u0142y poprawnie w twoim systemie .<\/p>\n","protected":false},"author":1,"featured_media":162831,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[805],"tags":[1169],"class_list":["post-230141","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=230141"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230141\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/162831"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=230141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=230141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=230141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}