PHPUnit für PHP: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist PHPUnit und warum wird es benötigt?

\n\n

PHPUnit ist ein Framework für das Modultesten (Unit Testing) in der Sprache PHP. Es gehört zur xUnit-Familie und bietet Entwicklern Werkzeuge zur Automatisierung der Überprüfung der Funktionsfähigkeit einzelner Programmkomponenten (Klassen, Methoden, Funktionen).

\n\n

Warum wird PHPUnit benötigt?

\n
    \n
  • Früherkennung von Fehlern: Tests werden nach jeder Codeänderung ausgeführt und ermöglichen es, Regressionen sofort zu erkennen.
  • \n
  • Code-Dokumentation: Gut geschriebene Tests dienen als lebendige Dokumentation und zeigen, wie eine bestimmte Methode funktionieren soll.
  • \n
  • Refactoring ohne Angst: Sie können Code bedenkenlos umschreiben, in dem Vertrauen, dass die Tests die vorhandene Funktionalität nicht beschädigen lassen.
  • \n
  • Unterstützung von TDD (Test-Driven Development): Testgetriebene Entwicklung – eine Methodik, bei der zuerst ein Test und dann der minimale Code geschrieben wird, um ihn zu bestehen.
  • \n
  • Integration mit CI/CD: PHPUnit lässt sich leicht in Continuous-Integration-Pipelines (GitHub Actions, GitLab CI, Jenkins) einbinden.
  • \n
\n\n

PHPUnit unterstützt Mocks (Mock-Objekte), Fixtures (Testdatensätze), Code Coverage und viele weitere erweiterte Funktionen.

\n\n

Installation von PHPUnit

\n\n

PHPUnit wird über Composer installiert – den Abhängigkeitsmanager für PHP. Falls Sie Composer noch nicht haben, installieren Sie es von der offiziellen Website getcomposer.org.

\n\n

Globale Installation (für CLI empfohlen)

\n
composer global require phpunit/phpunit
\n\n

Stellen Sie danach sicher, dass das globale Composer-Paketverzeichnis zum PATH hinzugefügt wurde. Überprüfen Sie die Installation:

\n
phpunit --version
\n\n

Lokale Installation (innerhalb des Projekts)

\n
composer require --dev phpunit/phpunit
\n\n

Danach ist PHPUnit über vendor/bin/phpunit verfügbar.

\n\n

Installation einer bestimmten Version

\n
composer require --dev phpunit/phpunit:^10.0
\n\n

Wichtig: Die PHPUnit-Version muss mit der PHP-Version in Ihrem Projekt übereinstimmen. Beispielsweise benötigt PHPUnit 10 PHP 8.1 oder höher.

\n\n

Schnellstart mit einem Codebeispiel

\n\n

Erstellen wir eine einfache Klasse Calculator.php und schreiben Tests dafür.

\n\n

Schritt 1. Erstellen der zu testenden Klasse

\n
<?php\n// src/Calculator.php\n\nclass Calculator\n{\n    public function add(int $a, int $b): int\n    {\n        return $a + $b;\n    }\n\n    public function subtract(int $a, int $b): int\n    {\n        return $a - $b;\n    }\n\n    public function multiply(int $a, int $b): int\n    {\n        return $a * $b;\n    }\n\n    public function divide(int $a, int $b): float\n    {\n        if ($b === 0) {\n            throw new \\InvalidArgumentException("Division by zero");\n        }\n        return $a / $b;\n    }\n}
\n\n

Schritt 2. Erstellen der Testklasse

\n
<?php\n// tests/CalculatorTest.php\n\nuse PHPUnit\\Framework\\TestCase;\n\nclass CalculatorTest extends TestCase\n{\n    private Calculator $calculator;\n\n    protected function setUp(): void\n    {\n        $this->calculator = new Calculator();\n    }\n\n    public function testAdd(): void\n    {\n        $result = $this->calculator->add(2, 3);\n        $this->assertEquals(5, $result);\n    }\n\n    public function testSubtract(): void\n    {\n        $result = $this->calculator->subtract(10, 4);\n        $this->assertEquals(6, $result);\n    }\n\n    public function testMultiply(): void\n    {\n        $result = $this->calculator->multiply(3, 4);\n        $this->assertEquals(12, $result);\n    }\n\n    public function testDivide(): void\n    {\n        $result = $this->calculator->divide(10, 2);\n        $this->assertEquals(5.0, $result);\n    }\                    

Empfehlungen