• Czas czytania ~3 min
  • 15.03.2023

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 storagetests/ 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.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297