Wenn CloverCoverage fehlschlägt und gleichzeitig bestanden wird
Ich habe in früheren Beiträgen über die Vorteile der Verwendung von GrumPHP gesprochen. Eines der Tools, die wir im letzten Jahr oder länger in Projekten verwendet haben, ist Clover.
Foto von Quentin REY auf Unsplash
Irgendwann zwischen dem Beginn der Verwendung und dieser Woche wurde es jedes Mal nicht auf meinem lokalen Computer ausgeführt, aber nicht auf dem Computer, auf dem wir unseren Code bereitgestellt haben.
Und nein, es lag nicht daran, dass es in den Unit-Tests falsche Anweisungen oder Kommentare gab, und es lag nicht daran, dass PHPUnit falsch konfiguriert war (es führte alle Tests aus und meldete sie wie erwartet).
Also was gibt?
Wenn CloverCoverage fehlschlägt
Die TL;DR-Version davon:
Sie müssen Xdebug ordnungsgemäß installiert haben, da CloverCoverage einen Treiber – also Xdebug – benötigt, um ordnungsgemäß ausgeführt zu werden. Das Problem ist, dass Sie Homebrew nicht so installieren können, wie wir es auf einmal könnten.
Der Rest dieses Beitrags führt Sie durch die Installation von Xdebug, die ordnungsgemäße Konfiguration in Ihrer PHP-Konfiguration, die ordnungsgemäße Einrichtung Ihrer PHPUnit-Konfiguration und die Überprüfung, ob alles überprüft wird, sodass Sie beim nächsten Ausführen von GrumPHP alle grünen Häkchen erhalten sollten .
Und als zusätzlichen Bonus sollten Sie beim nächsten Ausführen von PHPUnit einen gut aussehenden Bericht dazu erhalten. Hier ist, was Sie tun müssen.
Beachten Sie zunächst, dass dies auf der Idee basiert, dass Sie:
- mit Homebrew,
- PHPUnit installiert haben,
- PHP 7.1 installiert haben (ich verwende PHP 7.1.19 zum Zeitpunkt des Schreibens dieses Beitrags),
- Clover wird nicht richtig ausgeführt.
Um ein paar Dinge zu überprüfen, führen Sie den folgenden Befehl im Terminal aus :
Stellen Sie sicher, dass Sie mindestens PHPUnit 7.1.4 ausführen.
Überprüfen Sie als Nächstes Ihre PHP-Version :
Und stellen Sie sicher, dass Sie mindestens PHP 7.1.19 ausführen (Ihre Ausgabe sieht nicht genau wie meine aus, insbesondere in Bezug auf Xdebug, aber darum geht es in diesem Punkt).
An diesem Punkt sind wir bereit, Xdebug zu installieren und mit den erforderlichen Konfigurationsänderungen zu beginnen.
1 Installieren Sie Xdebug
Der Grund, warum wir Xdebug anders als zuvor installieren müssen, ist, dass es von Homebrew nicht mehr unterstützt wird. Aber keine Sorge, denn es ist genauso einfach über Pecl zu installieren .
Um es zu installieren, geben Sie den folgenden Befehl in Ihr Terminal ein:
Sie sollten dann eine Meldung sehen, dass es installiert wurde und dass die Erweiterung zu Ihrer PHP-Konfigurationsdatei hinzugefügt wurde. Nach meiner Erfahrung macht Pecl den letzten Schritt nicht richtig.
2 Suchen Sie die Xdebug-Binärdatei auf der Festplatte
Um dies zu beheben, müssen wir:
- Suchen Sie den vollständigen Pfad der Xdebug-Erweiterung,
- Platzieren Sie den vollständig qualifizierten Pfad zur Erweiterung in unserer PHP-Konfigurationsdatei
Verwenden Sie den folgenden Befehl, um die Pfade zu finden, in denen sich Xdebug befinden kann :
Möglicherweise erhalten Sie mehrere Pfade zurückgegeben (idealerweise sollten Sie jedoch nur einen erhalten). Wenn Sie mehr als einen erhalten, suchen Sie nach demjenigen, der in dem Pfad installiert ist, der das Pecl-Verzeichnis enthält. Es wird wahrscheinlich ungefähr so aussehen :
/usr/local/lib/php/pecl/20160303/xdebug.so
Sobald Sie eine Liste aller Orte erhalten, an denen Xdebug.so installiert ist, kopieren Sie den Pfad der Datei, damit wir PHP so konfigurieren können, dass es darauf verweist und es richtig verwendet.
3 Aktualisieren Sie die Konfiguration von PHP
Als nächstes müssen wir die Konfiguration von PHP aktualisieren. Dies ist einfach, da wir lediglich eine einzige Zeile zur PHP.ini-Datei hinzufügen müssen. Wenn Sie mehrere PHP-Versionen ausführen, hängt es natürlich von der Version von PHP ab, ob Sie diese zur richtigen Konfigurationsdatei hinzufügen.
Wenn Sie mehrere Versionen von PHP auf Ihrem Computer ausführen, werden Sie mehrere Versionen der PHP-Konfigurationsdatei haben. Wenn Sie eine einzelne Version installiert haben, dann haben Sie eine einzelne php.ini -Datei.
Dies befindet sich normalerweise in /usr/local/etc/php/7.1/ als php.ini , wenn Sie PHP 7.1 verwenden, aber Ihr Standort kann etwas anders sein. Aber der Folgeschritt bleibt gleich.
Stellen Sie anschließend sicher, dass Sie die folgende Zeile zur Datei php.ini hinzufügen . Dies kann wirklich an jeder Stelle in der Datei stehen, aber denken Sie daran, dass Sie den vollständig qualifizierten Pfad zu Xdebug.so angeben müssen. Die Datei sollte also diese Zeile enthalten :
zend_extension="/usr/local/lib/php/pecl/20160303/xdebug.so"
Ab da sollte alles funktionieren. Sie können dies überprüfen, indem Sie Folgendes ausführen :
Und dann sollten Sie die folgende Meldung sehen:
PHP 7.1.19 (cli) (erstellt: 25. Juni 2018 10:42:21) (NTS)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
mit Xdebug v2 .6.0, Copyright (c) 2002–2018, von Derick Rethans
mit Zend OPcache v7.1.19, Copyright (c) 1999–2018, von Zend Technologies
Beachten Sie die vierte Zeile, die einen Hinweis zu Xdebug enthält. Wenn Sie dies sehen, können Sie loslegen.
4 PHPUnit konfigurieren
An dieser Stelle müssen Sie als letztes sicherstellen, dass Ihre phpunit.xml-Datei richtig konfiguriert ist. Hier ist ein einfaches Beispiel dafür, wie meins aussieht (dies beinhaltet auch die Unterstützung für Clover):
<?xml version="1.0" encoding="UTF-8"?>
<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
bootstrap="./tests/bootstrap.php"
backupGlobals="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
>
<testsuites>
<testsuite name="Plugin">
<directory>./tests</directory>
<exclude>./tests/phpunit</exclude>
<exclude>./src/WordPress/*.php</exclude>
</testsuite>
</testsuites>
<logging>
<log type="coverage-clover" target="./coverage-report/coverage.xml"></log>
<log type="coverage-html" target="coverage-report" lowUpperBound="30" highLowerBound="80"></log>
<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"></log>
</logging>
<filter>
<whitelist>
<directory>./src</directory>
</whitelist>
</filter>
</phpunit>
Als nächstes können Sie PHPUnit manuell ausführen und sehen eine schöne Ausgabe der Codeabdeckung.
Oder Sie können GrumPHP ausführen, um das solide grüne Häkchen zu sehen (vorausgesetzt, Ihre Tests liegen innerhalb des Bereichs, den Sie in grump.yml definiert haben ).
Das Endergebnis
Obwohl es wie viele Schritte erscheinen mag (und ich nehme an, das ist es), dauert es nicht lange, bis dieses Setup ordnungsgemäß funktioniert. Hoffentlich spart Ihnen die obige exemplarische Vorgehensweise ein wenig Zeit bei der Arbeit mit PHP, PHPUnit usw., wenn CloverCoverage fehlschlägt (und gleichzeitig während der kontinuierlichen Bereitstellung erfolgreich ist).
Ich schreibe gerade ein eBook (zusammen mit einer Vielzahl anderer Premium-Inhalte). Wenn Sie interessiert sind, sehen Sie sich an, was Sie bekommen.



