Was ist Symfony KernelTestCase 2026?
KernelTestCase ist eine Basisklasse aus dem Symfony FrameworkBundle, die PHPUnit TestCase erweitert. Sie bootet den Symfony Kernel und stellt den vollständigen Service Container für Integrationstests bereit, ohne den HTTP Stack zu starten.
Welche Symfony Versionen unterstützen KernelTestCase 2026?
KernelTestCase ist in allen aktiven Symfony Versionen verfügbar: Symfony 6.4 LTS, Symfony 7.x und Symfony 8.x. In Symfony 8 wurden Verbesserungen am Container Handling und Kernel Shutdown eingeführt.
Wie unterscheidet sich KernelTestCase von WebTestCase 2026?
KernelTestCase testet Services und Repositories ohne HTTP Kontext. WebTestCase erweitert KernelTestCase um einen HTTP Client und DOM Crawler für Controller und Route Tests. Für reine Geschäftslogik reicht KernelTestCase.
Wie teste ich private Services mit KernelTestCase 2026?
Der Test Container von static::getContainer() gibt Zugriff auf öffentliche und nicht entfernte private Services. Entfernte private Services können in config/services_test.yaml explizit als public deklariert werden.
Brauche ich eine separate Testdatenbank für KernelTestCase 2026?
Ja, eine separate Testdatenbank ist empfohlen. Die Datei .env.test sollte eine eigene DATABASE_URL enthalten. So bleiben Produktionsdaten geschützt und Tests laufen isoliert.
Wie boote ich den Kernel in einem Test?
Der Aufruf self::bootKernel() in der Testmethode oder setUp() startet den Symfony Kernel. Anschließend ist der Service Container über static::getContainer() verfügbar.
Wird der Kernel für jeden Test neu gestartet?
Ja, KernelTestCase startet den Kernel automatisch für jeden einzelnen Test neu. Das stellt sicher, dass Tests voneinander isoliert laufen und keine Seiteneffekte auftreten.
Kann ich Doctrine Repositories mit KernelTestCase testen?
Ja, Doctrine Repositories sind ein Hauptanwendungsfall. Der Service Container liefert echte Repository Instanzen mit Datenbankverbindung. Tests können reale Abfragen gegen die Testdatenbank ausführen.
Wie konfiguriere ich die Kernel Klasse für Tests?
Die Kernel Klasse wird über die Umgebungsvariable KERNEL_CLASS in der .env.test Datei definiert. Alternativ können die Methoden getKernelClass() oder createKernel() in der Testklasse überschrieben werden.
Wie integriere ich KernelTestCase Tests in CI/CD?
KernelTestCase Tests laufen mit dem Standard PHPUnit Befehl. In CI/CD Pipelines wird die Testdatenbank automatisch erstellt, das Schema aufgebaut und Fixtures geladen, bevor die Tests starten.
Was ist der Test Container in Symfony?
Der Test Container ist ein spezieller Service Container, der nur in der Testumgebung verfügbar ist. Er erlaubt Zugriff auf private Services, die im Production Container versteckt sind, und wird über static::getContainer() abgerufen.
Wie vermeide ich langsame Integrationstests?
Best Practices für schnelle Tests: Datenbank Transaktionen nutzen und nach jedem Test zurückrollen, externe APIs mit MockResponse simulieren, setUp() für den Kernel Boot zentralisieren und nur nötige Fixtures laden.