Przejdźmy szybko przez konfigurację, aby rozpocząć testowanie równoległe i konfigurowanie raportów pokrycia kodu, aby przeanalizować, ile naszego kodu jest testowane.
Osobiście wykopuję raporty HTML za pomocą XDebug, ponieważ uwielbiam wizualizować zasięg linia po linii podczas pracy nad funkcją:
Pokażę ci, jak szybko skonfigurować raporty HTML w tym samouczku i skonfigurować testowanie równoległe w nowym projekcie.
Konfiguracja
Testy równoległe były oficjalnie wspierane w Laravel z Artisan od Laravel v8.25. Przejdźmy przez konfigurowanie równoległych testów i raportów zasięgu, konfigurując nowy projekt Laravel i przechodząc przez proces instalacji Paratest i konfigurowania naszych raportów.
Równoległe uruchamianie testów w nowym projekcie nie pomoże przyspieszyć naszych testów; Jednak wraz ze wzrostem liczby testów zauważysz wzrost wydajności.
Najpierw utwórz nową aplikację Laravel, a my będziemy ją kontrolować, abyśmy mogli zobaczyć zmiany po drodze podczas pracy nad konfiguracją.
laravel new parallel-demo --git
Polecenie laravel
tworzy nasz projekt i zatwierdza kod, dzięki czemu otrzymujemy czystą instalację i pojedyncze commit.
Aby użyć flagi --parallel
Laravela w PHPUnit, musimy zainstalować ParaTest. Laravel ułatwia to, zachęcając nas do tego, gdy uruchamiamy testy po raz pierwszy:
php artisan test --parallel
Running tests in parallel requires "brianium/paratest". Do you wish to install it as a dev dependency? (yes/no) [no]:
> yes
Using version ^6.6 for brianium/paratest
./composer.json has been updated
# ...
ParaTest v6.6.4 upon PHPUnit 9.5.25 #StandWithUkraine
.. 2 / 2 (100%)
Time: 00:00.300, Memory: 22.00 MB
OK (2 tests, 2 assertions)
Paratest jest teraz poprawnie zainstalowany i możemy przejść do uruchamiania testów z pokryciem i konfigurowaniem raportów HTML.
Raporty
zasięgu Inną pomocną flagą testową jest --coverage
, która wyświetla piękną wersję tekstową do terminala:
php artisan test --parallel --coverage
ERROR Code coverage driver not available. Did you set Xdebug's coverage mode?
W zależności od lokalnej konfiguracji PHP może pojawić się powyższy komunikat o błędzie z prośbą o ustawienie trybu pokrycia Xdebug. Nie będziemy wchodzić w szczegóły konfigurowania narzędzi pokrycia kodu, ale dostępnych jest kilka opcji. Nie mam nic przeciwko używaniu zasięgu Xdebug 3, ponieważ często używam Xdebug do debugowania w programowaniu.
Aby zasięg działał, musisz zobaczyć tryb Xdebug do pokrycia:
XDEBUG_MODE=coverage php artisan test --parallel --coverage
Po uruchomieniu powyższego polecenia powinieneś zobaczyć coś podobnego dla raportów pokrycia:
Raporty
While text-based coverage is helpful, I like using Raporty to visualize lines of code that are covered and not covered. They are highlighted in green and red:
Powyższy kod jest przykładem z domyślnej instalacji Laravel, a ja pozwolę ci zdecydować, czy chcesz przetestować / pokryć kod, który jest dostarczany z Laravel. Jestem zdania, że wolę ignorować początkowo wygenerowane pliki i skupiać się tylko na kodzie, który dodaję do aplikacji.
Dodawanie raportów HTML jest raczej proste. phpunit.xml
Otwórz plik, znajdź <coverage/>
i dodaj <report/>
tag:
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./app</directory>
</include>
<report>
<html outputDirectory="tests/Coverage/html"/>
</report>
</coverage>
Możesz umieścić zasięg gdziekolwiek chcesz, ale prawdopodobnie będziesz chciał zignorować wygenerowane pliki z kontroli wersji. Być może mógłbyś użyć coverage/
folderu w katalogu głównym projektu, umieścić go gdzieś w , lub osadzić w storage
tests/
folderze jak wyżej. Wybór należy do Ciebie!
Korzystając z powyższego przykładu ścieżki, dodaj do pliku następujące elementy.gitignore
:
# ...
tests/Coverage/
Po uruchomieniu testów z pokryciem wygeneruje on raport HTML. Następnie można otworzyć tests/Coverage/html/index.html
plik w przeglądarce, aby wyświetlić raport.
Dzięki temu powinieneś mieć dobrą konfigurację do równoległego uruchamiania testów i konfigurowania raportów HTML w celu łatwej wizualizacji zasięgu w programowaniu!
Podczas konfigurowania równoległych raportów testowania i pokrycia, możemy ulepszyć raporty pokrycia, ignorując pliki dostarczane z domyślną instalacją Laravel.