Never Code Alone Logo Never Code Alone
"PHP Unit" Schriftzug. PHP in hellblau und das Wort "Unit" in dunkelblau

PHPUnit Tutorial: Der ultimative Leitfaden für PHP Test Automation 2024

PHPUnit ist das führende Testing-Framework für PHP und ein unverzichtbares Werkzeug für professionelle Entwicklung. In zahlreichen Enterprise-Projekten hat sich PHPUnit als Grundpfeiler der Qualitätssicherung bewährt, besonders in automatisierten CI/CD Pipelines.

Dieser Leitfaden bietet einen strukturierten Einstieg in PHPUnit - von den ersten Schritten bis hin zu fortgeschrittenen Testing-Strategien.

Installation und Einrichtung

Systemvoraussetzungen

  • PHP 7.4 oder höher
  • Composer
  • Git (empfohlen)

 

Installation via Composer

Code:
          

composer require --dev phpunit/phpunit ^10.0

Basis-Konfiguration

Die phpunit.xml im Root-Verzeichnis des Projekts:

Code:
          

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php"
        colors="true"
        verbose="true"
        stopOnFailure="false">
   <testsuites>
       <testsuite name="Test Suite">
           <directory>tests</directory>
       </testsuite>
   </testsuites>
</phpunit>

Grundlagen des Unit Testing

Erste Schritte
Ein einfacher PHPUnit Test:

Code:
          

use PHPUnit\Framework\TestCase;

class SimpleTest extends TestCase
{
   public function testDivide()
   {
       $simple = new Simple(10);
       $this->assertEquals(5, $simple->divide(2));
   }
}

Wichtige Assertions
PHPUnit bietet verschiedene Methoden zur Überprüfung von Erwartungen:

Code:
          

// Gleichheit prüfen
$this->assertEquals($expected, $actual);

// Strikte Typprüfung
$this->assertSame($expected, $actual);

// Wahrheitswerte prüfen
$this->assertTrue($condition);
$this->assertFalse($condition);

// Null-Prüfung
$this->assertNull($variable);

// Objekttyp prüfen
$this->assertInstanceOf($expected, $actual);

Tests ausführen
Grundlegende Kommandos:

Code:
          

# Alle Tests ausführen
./vendor/bin/phpunit tests

# Spezifische Tests ausführen
./vendor/bin/phpunit --filter testDivide tests

# Mit Coverage-Report
./vendor/bin/phpunit --coverage-html coverage tests

CYPRESS.IO Ambassador und IT Consultant für QA Engenieering und Qualität in PHP Projekten.

Erreichen Sie unsere PHP Consultant Spezialisten

Wir sind Experten für PHP und helfen Ihnen, Ihre digitalen Herausforderungen zu meistern. Unser erfahrenes Team unterstützt Sie bei PHP Updates, PHP Refactoring und berät Sie remote zu allen Fragen rund um PHP. Mit unseren vollautomatischen CI/CD Deployments und einer robusten Docker-Infrastruktur bringen wir Ihre PHP-Projekte auf das nächste Level. Vertrauen Sie auf unsere Expertise für zuverlässige und skalierbare PHP-Lösungen.

Fortgeschrittene Techniken

Data Providers
Tests mit verschiedenen Datensätzen ausführen:

Code:
          

/**
* @dataProvider additionProvider
*/
public function testAdd($a, $b, $expected)
{
   $this->assertEquals($expected, $a + $b);
}

public function additionProvider()
{
   return [
       [0, 0, 0],
       [1, 1, 2],
       [1, 2, 3]
   ];
}

Mocking
Abhängigkeiten simulieren:

Code:
          

public function testUserService()
{
   $mock = $this->createMock(Database::class);
   $mock->method('query')
        ->willReturn(['id' => 1, 'name' => 'John']);

   $service = new UserService($mock);
   $user = $service->getUserById(1);

   $this->assertEquals('John', $user->getName());
}

Exception Testing
Prüfen von erwartetem Fehlverhalten:

Code:
          

public function testDivideByZero()
{
   $this->expectException(InvalidArgumentException::class);
   $simple = new Simple(10);
   $simple->divide(0);
}

Integration in CI/CD-Pipelines

GitLab CI/CD Konfiguration

Code:
          

phpunit:
 stage: test
 script:
   - composer install --no-interaction --no-progress
   - vendor/bin/phpunit --coverage-text --colors=never
 artifacts:
   reports:
     coverage_report:
       coverage_format: cobertura
       path: coverage.xml

Docker Integration

Code:
          

FROM php:8.1-cli

RUN apt-get update && apt-get install -y \
   git \
   unzip

RUN docker-php-ext-install pdo pdo_mysql

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

WORKDIR /app

Best Practices & Tipps

Coding Standards

  • Klare Benennungen: Tests sollten aussagekräftige Namen haben (z.B. testDivideByZeroThrowsException)
  • AAA-Pattern: Arrange, Act, Assert - Struktur in Tests einhalten
  • Isolation: Jeder Test sollte unabhängig von anderen Tests sein

Performance-Optimierung

  • Parallele Ausführung nutzen
  • Fixtures für wiederverwendbare Testdaten
  • Database Transactions für Datenbank-Tests

Häufig gestellte Fragen FAQ

Was ist PHPUnit?

PHPUnit ist das meistgenutzte Testing-Framework für PHP, das automatisierte Tests ermöglicht und die Code-Qualität sicherstellt.

Wie installiere ich PHPUnit?

Die Installation erfolgt mit einem einzigen Composer-Befehl: composer require --dev phpunit / phpunit.

Funktioniert PHPUnit mit PHP 8?

Ja, PHPUnit ist vollständig kompatibel mit PHP 8 und unterstützt alle modernen PHP-Funktionen.

Wie starte ich meinen ersten Test?

Erstellen Sie eine Test-Klasse, die von TestCase erbt, und führen Sie sie mit dem Befehl . / vendor / bin / phpunit aus.

Was ist ein Unit Test?

Ein Unit Test prüft eine einzelne Funktionseinheit des Codes auf korrektes Verhalten und isoliert sie von anderen Abhängigkeiten.

Brauche ich PHPUnit für kleine Projekte?

Auch kleine Projekte profitieren von PHPUnit, da es hilft, Fehler früh zu erkennen und die Wartbarkeit zu verbessern.

Wie teste ich Datenbank-Zugriffe?

PHPUnit bietet spezielle TestCase-Klassen für Datenbank-Tests und ermöglicht das Mocken von Datenbankverbindungen.

Was ist der Unterschied zwischen assertEquals und assertSame?

assertEquals prüft auf Wertgleichheit, während assertSame zusätzlich auf exakte Typ-Übereinstimmung testet.

Kann ich PHPUnit in meiner IDE nutzen?

Ja, alle gängigen PHP-IDEs wie PHPStorm, VS Code und Netbeans bieten integrierte Unterstützung für PHPUnit.

Wie lange dauert das Erlernen von PHPUnit?

Die Grundlagen von PHPUnit können innerhalb weniger Stunden erlernt werden, die Entwicklung guter Teststrategien erfordert jedoch Praxis.

Fazit

PHPUnit ist ein mächtiges Werkzeug für qualitativ hochwertige PHP-Entwicklung. Die systematische Implementierung von Tests verbessert die Code-Qualität, reduziert Fehler und erleichtert Refactoring-Maßnahmen erheblich.

PHPUnit Bilder Galerie von Social Media Posts

Sammlung verschiedener Bilder von Instagram und X ehemals Twitter zu Hashtag PHPUnit Media Images.

Laptop PHPUnit Startseite mit Bücherregal und Kaffeetasse im Hintergrund

PHPUnit 81 Success Run mit 100 % Code Coverage

Git clone PHPUnit Open Source Contribution

Zwei Maurer chaotische Arbeit - Just keep coding. When can always fix it later - Headline

Roland Golla Selfi Laptop IDE mit Darkmode mit Headset PHPUnit Testcode

X Tweet Horror Story -Write a developer horror story in 5 words or less - lets test in production!

IDE Sceen Darkmode PHP Classe Blur effect Filter

Sebastian Bergmann Speaker Shopware Community Day 2024

Windows Powershell Terminal PHPUnit Run Result grün ok

PHPUnit Tests NEOVim Speaker live YouTube Daniel Siepmann Never Code Alone

PHPUnit Result 100 Prozent 2000 Tests

Schreibtisch Ansicht gespiegelter Laptop auf Monitor PHPUnit Linux Terminal

Linux Terminal PHPUnit successful Run

PHP8 Reflection Class doesent require Online Test Tool Output

PHPUnit GitLab CI Linus Terminal Ausgabe Mock API Requests