IT Narzędzie do testów

PHPUnit

Definicja #

PHPUnit to framework do testowania jednostkowego w PHP, stworzony przez Sebastiana Bergmanna. Jest de facto standardem testowania w ekosystemie PHP — używany powszechnie w projektach Laravel, Symfony, Drupal i Magento.

Kluczowe elementy PHPUnit:

  • Klasy testów — klasy dziedziczące po PHPUnit\Framework\TestCase; metody testowe muszą zaczynać się od prefixu test lub mieć adnotację @test
  • Asercje — bogaty zestaw asercji: assertEquals(), assertTrue(), assertInstanceOf(), assertCount(), assertThrows() i wiele innych
  • Data Providers — metody dostarczające zestawów danych testowych przez adnotację @dataProvider; pozwala uruchomić ten sam test z wieloma wejściami
  • Mockowanie — wbudowany framework do tworzenia mocków i stubów: $this->createMock(), expects(), willReturn()
  • Test Doubles — mock, stub, spy, fake — izolacja jednostki testowanej od zewnętrznych zależności
  • Code Coverage — raport pokrycia kodu testami generowany przez Xdebug lub pcov; wizualizacja w HTML lub Clover XML
  • Test Suite i konfiguracja — plik phpunit.xml lub phpunit.xml.dist konfiguruje zestawy testów, bootstrap i raportowanie

PHPUnit jest ściśle zintegrowany z frameworkami PHP: Laravel dostarcza własną klasę bazową Tests\TestCase z helpersami do testowania aplikacji (HTTP tests, database transactions, mocking facades). Symfony integruje PHPUnit przez WebTestCase i KernelTestCase.

Zastosowania #

  • Testy jednostkowe logiki biznesowej — izolowane testowanie serwisów, repozytoriów i obiektów domenowych PHP
  • Testy integracyjne w Laravel i Symfony — testowanie kontrolerów, middleware i warstwy bazy danych z test database
  • Testy HTTP w Laravel — $this->get(), $this->post(), assertStatus() do testowania endpointów API
  • TDD w PHP — cykl red-green-refactor z PHPUnit jako narzędziem weryfikującym każdy krok
  • CI/CD pipeline — uruchamianie PHPUnit automatycznie przy każdym commicie (GitHub Actions, GitLab CI)

Ścieżka nauki #

PHPUnit jest obowiązkowym elementem zestawu umiejętności każdego PHP developera pracującego w projektach profesjonalnych.

Zacznij od:

  • Instalacja: composer require --dev phpunit/phpunit
  • Pierwszy test: klasa dziedzicząca po TestCase, metoda testNazwa() z asercją
  • Uruchamianie: ./vendor/bin/phpunit lub php artisan test w Laravel
  • Asercje: assertEquals, assertTrue, assertNull, expectException

Następnie pogłębiaj:

  • Data Providers — parametryzowane testy z wieloma zestawami danych wejściowych
  • Mockowanie — izolacja zależności przez createMock() i createStub()
  • Code Coverage — konfiguracja Xdebug i generowanie raportów HTML
  • Laravel Testing — RefreshDatabase, factory, HTTP tests, actingAs()
  • Integracja z CI: konfiguracja GitHub Actions do uruchamiania testów przy PR

FAQ #

Czym jest PHPUnit i do czego służy?
PHPUnit to framework do automatycznego testowania kodu PHP. Pozwala pisać testy sprawdzające poprawność działania klas i metod PHP. Jest standardem w ekosystemie PHP — używany w projektach Laravel, Symfony, Drupal. Automatyczne testy wykrywają regresje i dają pewność, że zmiany kodu nie psują istniejącej funkcjonalności.
Jak działa mockowanie w PHPUnit?
PHPUnit tworzy mock obiekt zastępujący prawdziwą zależność (np. bazę danych, zewnętrzne API). Mock pozwala określić: jakie metody zostaną wywołane, ile razy, z jakimi argumentami i co mają zwrócić. Dzięki temu test jest izolowany — nie wymaga działającej bazy ani zewnętrznego serwisu.
Czym różni się phpunit.xml od phpunit.xml.dist?
phpunit.xml.dist to plik konfiguracji dostarczany z projektem (commitowany do repozytorium) — zawiera domyślne ustawienia. phpunit.xml to lokalne nadpisanie (w .gitignore) — każdy developer może dostosować konfigurację do swojego środowiska. PHPUnit preferuje phpunit.xml jeśli istnieje, w przeciwnym razie używa phpunit.xml.dist.
Jak mierzyć pokrycie kodu testami w PHPUnit?
PHPUnit generuje raport Code Coverage przez Xdebug lub pcov. Uruchomienie: <code>./vendor/bin/phpunit --coverage-html coverage/</code>. Raport HTML pokazuje które linie i gałęzie kodu są pokryte testami. Pokrycie 80%+ jest dobrym celem dla nowych modułów, ale jakość testów ważniejsza niż metryka pokrycia.
Ostatnia aktualizacja:

Powiązane hasła

Technologie i biblioteki, które najczęściej pojawiają się razem z PHPUnit w ogłoszeniach.

Cały słownik IT

Przeglądaj słownik IT alfabetycznie

Wybierz literę, aby zobaczyć wszystkie hasła zaczynające się od niej.