Mit diesem Beitrag möchte ich euch Code Coverage in Verbindung mit PHPUnit und XDebug vorstellen. Code Coverage (zu deutsch: Testabdeckung) ist ein nützliches Hilfsmittel, um zu überprüfen, wie der zu testende Code mit Testfällen abgedeckt wird. Man kann z.B. leicht erkennen, welche Codeteile nicht von den PHPUnit Tests abgedeckt werden.
== Installation ==
Die Installation bezieht sich auf Ubuntu (UNIX) und kann bei anderen Systemen abweichen. Als erstes installieren wir uns PHPUnit:
Danach sollte PHPUnit systemweit über den folgenden Befehl aufrufbar sein:
Nun installieren wir noch XDebug:
Als nächstes müssen wir noch unsere PHP-Konfigurationsdatei anpassen:
Wir fügen nun folgendes in die Datei ein:
Den absoluten Pfad zur Extension kann man über "find" herausfinden:
Am Ende müssen wir Apache neustarten:
Um sicherzustellen, dass XDebug erfolgreich eingerichtet ist, reicht uns folgender Befehl:
Als Ausgabe sollte wir diesen Text hier erhalten und zwar mit dem XDebug Copyright Text:
== PHPUnit Test erstellen ==
Wir erstellen uns folgende Beispielklasse und Beispiel-Testklasse:
Inhalt der Beispielklasse:
Alles anzeigen
Jetzt die dazugehörige Testklasse:
Inhalt der Testklasse:
Alles anzeigen
== Coder Coverage Report erstellen ==
Die Erstellung des Code Coverage Reports ist relativ simpel und reduziert sich auf einen Befehl:
Dann können wir den erzeugten Report anschauen. Dazu öffnen wir einfach die im Ordner "report" erzeugte Datei "exampleClass.php.html" mit irgendeinem Browser, wie z.B. Firefox.
Ergebnis:
[Blockierte Grafik: http://image-upload.de/image/fCmRh1/e837a6aa79.jpg]
[Blockierte Grafik: http://image-upload.de/image/OAOwjm/d4c19979b7.jpg]
Durch die farbliche Hervorhebung sehen wir nun leicht, welche Codeanteile durch unsere Testfälle abgedeckt sind und wie oft sie durchlaufen wurden.
== Installation ==
Die Installation bezieht sich auf Ubuntu (UNIX) und kann bei anderen Systemen abweichen. Als erstes installieren wir uns PHPUnit:
Danach sollte PHPUnit systemweit über den folgenden Befehl aufrufbar sein:
Nun installieren wir noch XDebug:
Als nächstes müssen wir noch unsere PHP-Konfigurationsdatei anpassen:
Wir fügen nun folgendes in die Datei ein:
Den absoluten Pfad zur Extension kann man über "find" herausfinden:
Am Ende müssen wir Apache neustarten:
Um sicherzustellen, dass XDebug erfolgreich eingerichtet ist, reicht uns folgender Befehl:
Als Ausgabe sollte wir diesen Text hier erhalten und zwar mit dem XDebug Copyright Text:
== PHPUnit Test erstellen ==
Wir erstellen uns folgende Beispielklasse und Beispiel-Testklasse:
Inhalt der Beispielklasse:
Quellcode
- <?php
- class ExampleClass
- {
- private $exampleVar = '';
- private static $onExampleMode = true;
- public function getExampleVar()
- {
- return $this->exampleVar;
- }
- public function setExampleVar($var)
- {
- if($var === 'abc')
- {
- $this->exampleVar = $var;
- }
- else
- {
- $this->exampleVar = 'xyz';
- }
- }
- public function isOnExampleMode()
- {
- return self::$onExampleMode;
- }
- }
- ?>
Jetzt die dazugehörige Testklasse:
Inhalt der Testklasse:
Quellcode
- <?php
- require_once('exampleClass.php');
- class ExampleClassTest extends PHPUnit_Framework_TestCase
- {
- private $exampleInstance = '';
- protected function setUp()
- {
- $this->exampleInstance = new ExampleClass();
- }
- public function testExampleVarIsStringAbc()
- {
- $this->exampleInstance->setExampleVar('abc');
- $this->assertEquals('abc', $this->exampleInstance->getExampleVar());
- }
- }
- ?>
== Coder Coverage Report erstellen ==
Die Erstellung des Code Coverage Reports ist relativ simpel und reduziert sich auf einen Befehl:
Dann können wir den erzeugten Report anschauen. Dazu öffnen wir einfach die im Ordner "report" erzeugte Datei "exampleClass.php.html" mit irgendeinem Browser, wie z.B. Firefox.
Ergebnis:
[Blockierte Grafik: http://image-upload.de/image/fCmRh1/e837a6aa79.jpg]
[Blockierte Grafik: http://image-upload.de/image/OAOwjm/d4c19979b7.jpg]
Durch die farbliche Hervorhebung sehen wir nun leicht, welche Codeanteile durch unsere Testfälle abgedeckt sind und wie oft sie durchlaufen wurden.
10.275 mal gelesen