Generator phpunit.xml

Gotowa konfiguracja PHPUnit

Bez konta
Bez instalacji
Bezpłatnie
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Ustaw opcje i wygeneruj plik phpunit.xml.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Podaj dalej

Komuś też się przyda?

Wyślij znajomemu link. Otworzy narzędzie od razu, bez konta i bez opłat.

Generator pliku phpunit.xml

PHPUnit to najpopularniejszy framework testów jednostkowych w PHP. Plik phpunit.xml określa, które testy uruchomić i jak zbierać pokrycie kodu.

Najważniejsze sekcje

SekcjaZnaczenie
bootstrapplik ładujący autoloader
testsuiteskatalogi z testami
source/includekod mierzony pod kątem pokrycia
php / iniustawienia środowiska testów

Przykład

Konfiguracja wskazuje katalog tests/Unit i mierzy pokrycie katalogu app. Uruchomienie: vendor/bin/phpunit lub php artisan test w Laravelu.

Pokrycie kodu

Do pomiaru pokrycia potrzebny jest Xdebug lub PCOV. Bez nich testy się uruchomią, ale raport pokrycia nie powstanie. Raport HTML wygenerujesz flagą --coverage-html.

Jak działa generator phpunit.xml

Generator pracuje w całości po stronie przeglądarki i nie opiera się na żadnej tablicy stałych ani zamkniętej liście dozwolonych elementów. To, co wpiszesz w formularzu, jest mapowane jeden do jednego na węzły i atrybuty dokumentu XML: nazwa zestawu staje się wartością atrybutu name, katalog trafia jako treść elementu directory, a ścieżka pojedynczego pliku jako element file. Nie ma tu ukrytych wartości domyślnych, które narzędzie dopisywałoby po swojej stronie.

Puste pola są pomijane w całości. Jeśli nie podasz katalogu pamięci podręcznej, odpowiedni element nie pojawi się w pliku, a PHPUnit zastosuje własne zachowanie domyślne. Dzięki temu wynik jest przewidywalny i wygodny w porównaniach: zmiana jednego pola zmienia dokładnie jedną linię konfiguracji, a reszta dokumentu zostaje bez zmian.

Drugi etap to serializacja drzewa do tekstu z zachowaniem kolejności wymaganej przez schemat, na który wskazuje atrybut xsi:noNamespaceSchemaLocation. PHPUnit waliduje plik przy starcie, więc kolejność sekcji i poprawność nazw atrybutów mają znaczenie — generator pilnuje obu tych rzeczy, ale nie zna wersji frameworka, którą uruchomisz, dlatego nie zagwarantuje, że każdy nowszy atrybut zostanie przyjęty przez starsze wydanie.

Narzędzie nie sięga do repozytorium: nie sprawdza, czy wskazany katalog istnieje, nie wykrywa zainstalowanych rozszerzeń ani nie odczytuje pliku composer.json. Dostajesz dokładnie taką deklarację, jaką wpiszesz, a weryfikacja należy do samego PHPUnit.

Przykład krok po kroku

  1. Ustalasz punkt wejścia: jeden wpis bootstrap ze ścieżką vendor/autoload.php. Licznik węzłów struktury wynosi 1.
  2. Dodajesz zestawy testów. Repozytorium ma katalog tests z trzema podkatalogami: Unit, Integration i Functional, więc wpisujesz trzy zestawy, każdy z własnym katalogiem. Licznik: 1 + 3 = 4.
  3. Wskazujesz kod mierzony pod kątem pokrycia: dwa katalogi, src oraz app. Licznik: 4 + 2 = 6.
  4. Ustawiasz zachowanie uruchomienia: cacheDirectory w katalogu .phpunit.cache, colors na true, executionOrder na depends,defects (dwie wartości) i stopOnFailure na false. To cztery atrybuty, więc łącznie masz 6 + 4 = 10 wpisów konfiguracji.
  5. Pomijasz pola, których nie potrzebujesz: nie dodajesz żadnego wpisu do sekcji odpowiedzialnej za zmienne środowiskowe ani nie wykluczasz katalogów. Wynik to plik z 6 węzłami struktury i 4 atrybutami.
  6. Kontrola deklaracji: gdybyś w kroku trzecim podał wyłącznie katalog src, pokrycie objęłoby jeden katalog z dwóch, czyli deklaracja dotyczyłaby połowy kodu źródłowego, a drugi katalog pozostałby poza raportem.

Elementy i atrybuty konfiguracji — tabela referencyjna

Element lub atrybutZnaczenieKiedy go ustawiasz
cacheDirectoryKatalog, w którym PHPUnit trzyma pliki pamięci podręcznej i stan kolejnych uruchomieńGdy chcesz przyspieszyć powtórne przebiegi i trzymać artefakty poza repozytorium
colorsKolorowanie wyjścia w terminaluWłączasz lokalnie dla czytelności, wyłączasz w środowisku ciągłej integracji, gdzie liczy się czysty log
executionOrderKolejność, w jakiej uruchamiane są testyGdy chcesz zaczynać od przypadków, które padły w poprzednim przebiegu, zamiast od kolejności plików
stopOnFailurePrzerwanie całej serii po pierwszym niepowodzeniuPrzy debugowaniu pojedynczego błędu; w pełnym przebiegu zwykle niepotrzebne
failOnWarningTraktowanie ostrzeżeń jako niepowodzeńGdy budujesz twardą bramkę jakości i nie chcesz przepuszczać przebiegów z ostrzeżeniami
failOnRiskyTraktowanie testów uznanych za ryzykowne jako niepowodzeńGdy chcesz wymusić, aby każdy test faktycznie wykonywał asercje
beStrictAboutOutputDuringTestsTraktowanie wyjścia wygenerowanego w trakcie testu jako problemuPrzy testowaniu kodu, który nie powinien nic wypisywać na standardowe wyjście
excludeWyłączenie wskazanych katalogów z pomiaru pokryciaDla kodu generowanego automatycznie, migracji i plików pomocniczych, które zaniżają albo zaburzają odsetek

Praktyczne wskazówki

  • Trzymaj plik w katalogu głównym projektu — PHPUnit szuka konfiguracji w katalogu, z którego go uruchamiasz, więc przenoszenie pliku do podkatalogu wymaga każdorazowego wskazywania go flagą configuration.
  • Rozdziel zestawy według czasu wykonania — osobny zestaw dla szybkich testów jednostkowych i osobny dla wolniejszych pozwala uruchamiać ten pierwszy w trakcie pracy, a pełny przebieg zostawić na koniec.
  • Nie wskazuj katalogu testów jako źródła pokrycia — jeśli dodasz katalog tests do listy mierzonego kodu, raport policzy również sam kod testów i zafałszuje odsetek.
  • Wersjonuj wariant zapasowy, nie plik lokalny — plik z konfiguracją lokalną dopisz do ignorowanych, a do repozytorium wrzuć wariant wspólny dla zespołu, żeby każdy mógł nadpisać ustawienia bez konfliktów.
  • Dodaj katalog pamięci podręcznej do ignorowanych — pliki stanu zmieniają się przy każdym przebiegu i zaśmiecają historię zmian.

Ograniczenia narzędzia

  • Nie sprawdza ścieżek — generator nie wie, czy wskazany katalog ani plik istnieje. Literówka w nazwie katalogu objawi się dopiero przy uruchomieniu PHPUnit, czasem jako cicho pominięty zestaw testów.
  • Nie zna twojego środowiska — nie ustali, czy masz zainstalowane rozszerzenie potrzebne do pomiaru pokrycia ani którą wersję frameworka uruchamiasz, więc nie dobierze pod to ustawień.
  • Nie generuje plików towarzyszących — nie tworzy skryptu ładującego, nie instaluje zależności i nie zakłada katalogu na raporty. To wszystko musisz przygotować samodzielnie.
  • Nie zastąpi konfiguracji środowiska — zmienne przekazywane z zewnątrz, nadpisywane w potoku ciągłej integracji albo w pliku lokalnym, mogą zmienić zachowanie przebiegu niezależnie od tego, co znajdzie się w wygenerowanym pliku.

Najczęstsze pytania

Po co bootstrap?

Ładuje autoloader Composera, dzięki czemu PHPUnit widzi klasy aplikacji i zależności.

Czym różni się test jednostkowy od funkcjonalnego?

Jednostkowy sprawdza pojedynczą klasę w izolacji, funkcjonalny — działanie całych przepływów, często z bazą danych.

Jak działać z bazą w testach?

Najczęściej używa się SQLite w pamięci lub transakcji, które wycofują zmiany po każdym teście.

Czym różni się phpunit.xml od phpunit.xml.dist?

Plik z rozszerzeniem .dist to wersja wzorcowa wersjonowana w repozytorium, a plik bez tego rozszerzenia to konfiguracja lokalna, która może go nadpisać. Framework sięga po plik lokalny, jeśli istnieje, a w przeciwnym razie korzysta z wariantu wzorcowego.

Dlaczego PHPUnit nie widzi moich testów?

Najczęściej dlatego, że w konfiguracji brakuje zestawu wskazującego właściwy katalog albo pliki testów nie kończą się przyjętym przyrostkiem. Sprawdź też, czy ścieżka w zestawie nie zawiera literówki, bo błędnie wskazany katalog jest po prostu pomijany.

Jak wykluczyć katalog z pomiaru pokrycia?

Dodaj wpis wykluczający wewnątrz sekcji wskazującej mierzony kod, obok katalogów, które mają być liczone. Wykluczenie działa tylko na raport pokrycia — testy z tego katalogu nadal mogą się uruchamiać, jeśli należą do któregoś z zestawów.

Czy mogę uruchomić tylko jeden zestaw testów?

Tak, wystarczy podać flagę testsuite z nazwą zestawu przy uruchomieniu. Dlatego warto nadawać zestawom krótkie, jednoznaczne nazwy — będą widoczne zarówno w wywołaniu, jak i w raporcie.

Po co ustawiać executionOrder?

Pozwala zaczynać przebieg od testów, które padły ostatnio, co skraca pętlę poprawiania błędów. Wartość depends,defects oznacza uwzględnienie najpierw zależności między testami, a następnie przypadków, które zakończyły się niepowodzeniem.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!