Codeception für PHP: Komplettguide mit Beispielen
1. Was ist Codeception und warum braucht man es?
Codeception ist ein vollwertiges Testframework für PHP-Anwendungen, das die besten Praktiken aus Unit-, Funktions-, Akzeptanz- (Acceptance) und Integrationstests vereint. Im Gegensatz zum standardmäßigen PHPUnit bietet Codeception eine einheitliche, intuitiv verständliche API für alle Testarten sowie leistungsstarke Werkzeuge für die Arbeit mit Browsern (via WebDriver oder PhpBrowser), Datenbanken, REST-APIs und sogar JavaScript.
Das Hauptziel von Codeception ist es, das Schreiben von Tests so einfach und lesbar wie möglich zu machen. Das Framework verwendet eine BDD-ähnliche Syntax (Behavior-Driven Development), bei der Tests in natürlicher Sprache mit Aktionsmethoden beschrieben werden: $I->amOnPage('/login'), $I->fillField('email', 'user@example.com'), $I->click('Login'). Dadurch können nicht nur Entwickler, sondern auch Tester, Analysten und Projektmanager leicht verstehen, was genau geprüft wird.
Codeception ist unverzichtbar in Projekten, die umfassende Tests erfordern – von der Überprüfung einzelner Klassen (Unit-Tests) bis zur Simulation echter Benutzeraktionen im Browser (Akzeptanztests). Es unterstützt gängige Frameworks (Laravel, Symfony, Yii2, Zend), verwaltet automatisch Datenbanktransaktionen, erstellt bei Fehlern Screenshots und generiert detaillierte Berichte. Wenn Sie die Codequalität verbessern und die Zeit für Regressionstests verkürzen möchten, ist Codeception Ihr zuverlässiger Partner.
2. Installation
Codeception wird über Composer, den Standard-Paketmanager für PHP, verteilt. Stellen Sie sicher, dass PHP 7.4 oder höher und Composer installiert sind.
Führen Sie im Terminal im Stammverzeichnis Ihres Projekts aus:
composer require --dev codeception/codeception
Nach der Installation können Sie Codeception im Projekt initialisieren:
vendor/bin/codecept init
Dieser Befehl erstellt die grundlegende Verzeichnisstruktur: tests/ mit den Unterordnern unit, functional, acceptance sowie die Konfigurationsdatei codeception.yml.
Für browsergestützte Tests installieren Sie zusätzlich das WebDriver-Modul (falls Sie Selenium oder ChromeDriver verwenden möchten):
composer require --dev codeception/module-webdriver
Für REST-API-Tests installieren Sie das REST-Modul:
composer require --dev codeception/module-rest
3. Schnellstart – Minimales funktionierendes Beispiel
Erstellen wir einen einfachen Unit-Test zur Überprüfung einer mathematischen Funktion. Nach der Initialisierung (codecept init) haben Sie bereits die Datei tests/unit.suite.yml. Bearbeiten wir sie, um das Modul Asserts zu aktivieren:
# tests/unit.suite.yml
actor: UnitTester
modules:
enabled:
- Asserts
Jetzt erstellen wir die Testdatei tests/unit/MathTest.php:
<?php
use Codeception\Test\Unit;
class MathTest extends Unit
{
protected UnitTester $tester;
public function testAddition()
{
$result = 2 + 3;
$this->tester->assertEquals(5, $result, '2 + 3 sollte 5 ergeben');
}
public function testSubtraction()
{
$result = 10 - 4;
$this->tester->assertGreaterThan(5, $result, '10 - 4 sollte größer als 5 sein');
}
}
Führen Sie den Test aus:
vendor/bin/codecept run unit
Sie sollten eine grüne Ausgabe sehen.
Auch in der Bibliothek
SwiftUI für Swift: Vollständiger Leitfaden mit Beispielen
Mocha JavaScript (Node.js): Komplettleitfaden mit Beispielen
Arbeiten mit Bildern in PHP: resize, crop (Zuschneiden und Skalieren)
Datenbankmigrationen in Swift: Tools und Praktiken für iOS/macOS