Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Aplikacje pisane w Laminas dzielone są na moduły, takie podejście umożliwia bardzo szybkie przystosowanie wcześniej napisanego fragmentu kodu do nowej aplikacji. Należy również pamiętać, że każdy moduł ma własne testy jednostkowe. W artykule nie będziemy zajmować się instalacją modułu tylko konfiguracją pliku phpunit.xml. Do prawidłowego działania przykładu należy zainstalować XDebug – potrzebny do generowania raportów testów jednostkowych w formacie HTML.

Zaczynając przygodę z Laminas powinniśmy zapoznać się z artykułem „Pierwszy prosty projekt Laminas w Eclipse PDT”. Konfiguracja pliku phpunit.xml została oparta na module przedstawionych w artykule „Tworzenie modułu HelloWorld w Laminas”. Instalację modułu HelloWorld można przeprowadzić ręcznie pobierając plik zip z powyższej strony. 

Informację o konfiguracji testów jednostkowych w katalogu test można znaleźć na stronie https://docs.laminas.dev/tutorials/unit-testing/. Więcej informacji na temat testów jednostkowych należy szukać na stronie dokumentacji PHPUnit https://phpunit.de/documentation.html.

Kiedy środowisko pracy prawidłowo skonfigurujemy i testy jednostkowe zostaną utworzone. Przystępujemy do konfiguracji pliku phpunit.xml, który umieszczamy w katalogu głównym projektu. Przykładowy plik phpunit.xml.dist powinien już istnieć (Listing 1), w katalogu głównym projektu np. projekt-laminas (rys. 1.). Po uruchomieniu testów jednostokowych najpierw jest uruchamiany plik phpunit.xml, jednak jeśli plik nie istnieje PHPUnit pobierze konfigurację z pliku phpunit.xml.dist (rys. 2.).

 

Listing 1. Przykładowa zawartość pliku projekt-laminas/phpunit.xml.dist

<?xml version="1.0" encoding="UTF-8"?>
<!-- Testy jednostkowe PHP (PHPUnit kurs) -->
<!-- Konfiguracja PHPUnit Laminas -->
<phpunit colors="true">
   <testsuites>
      <testsuite name="Laminas MVC Skeleton Test Suite">
         <directory>./module/Application/test</directory>
      </testsuite>
   </testsuites>
   <filter>
      <whitelist addUncoveredFilesFromWhitelist="true">
         <directory suffix=".php">./module/*/src</directory>
      </whitelist>
   </filter>
</phpunit> 

 

Rys. 1. Struktura katalogów, plików w projekcie - Eclipse

Rys. 1. Struktura katalogów, plików w projekcie - Eclipse

 

Rys. 2. Testy jednostkowe PHP, uruchamiamy za pomocą polecenia PHPUnit w Laminas

Rys. 2. Testy jednostkowe PHP, uruchamiamy za pomocą polecenia PHPUnit w Laminas

 

Plik phpunit.xml.dist należy dostosować do własnych potrzeb, możemy zmienić mu nazwę na phpunit.xml, obie nazwy plików mają działanie identyczne. Poprawiony kodu został umieszczony na listingu 2, zawiera również dokładny opis działania. Atrybuty dla elementu <phpunit> opisano na stronie dokumentacji https://phpunit.readthedocs.io/en/9.0/configuration.html. Do wygenerowania raportów w formacie HTML należy skonfigurować element <logging> (rys. 2., rys. 3.).

 

Listing 2. Poprawiona zawartość pliku projekt-laminas/phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Testy jednostkowe PHP (PHPUnit kurs) -->
<!-- Konfiguracja PHPUnit Laminas -->
<phpunit colors="true">
   <testsuites>
      <!-- Testy jednostkowe dla modułu Application -->
      <testsuite name="Laminas MVC Skeleton Test Suite">
         <directory>./module/Application/test</directory>
      </testsuite>
      <!-- Testy jednostokowe dla modułu HelloWorld -->
      <testsuite name="HelloWorld">
         <directory>./module/HelloWorld/test</directory>
      </testsuite>
   </testsuites>
   <filter>
      <whitelist addUncoveredFilesFromWhitelist="true">
         <!-- Testuje tylko pliki PHP modułu Application umieszczone w katalogu src. -->
         <directory suffix=".php">./module/Application/src</directory>
         <!-- Testuje tylko pliki PHP modułu HelloWorld umieszczone w katalogu src. -->
         <directory suffix=".php">./module/HelloWorld/src</directory>
      </whitelist>
   </filter>
   <!-- Generowanie raportu z pokrycia kodu w formacie HTML. -->
   <!-- Do wygenerowania raportu w formacie HTML należy najpierw zainstalować XDebug. -->
   <!-- (PHPUnit code coverage) -->
   <logging>
      <log type="coverage-html" target="./tmp/report" lowUpperBound="50" highLowerBound="80"/>
      <log type="testdox-html" target="./tmp/testdox.html"/>
      <log type="testdox-text" target="./tmp/testdox.txt"/>
   </logging>
</phpunit>

 

Rys. 3. Raport w formacie HTML z testów projektu projekt-laminas

Rys. 3. Raport w formacie HTML z testów projektu projekt-laminas

 

Rys. 4. Raport z przetestowania klasy IndexController.php, moduł HelloWorld

Rys. 4. Raport z przetestowania klasy IndexController.php, moduł HelloWorld 

 

Wybrane książki:

  1. Ben Forta: Wyrażenia regularne od podstaw, Wydawnictwo Helion, 2020.
  2. Ramez Elmasri, Shamkant B. Navathe: Wprowadzenie do systemów baz danych. Wydanie VII, Wydawnictwo Helion, 2019.
  3. Mizanur Rahman: PHP 7. Algorytmy i struktury danych, Wydawnictwo Helion, 2018.
  4. Luke Welling, Laura Thomson: PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie V, Wydawnictwo Helion, 2017.
  5. Matt Zandstra: PHP. Obiekty, wzorce, narzędzia. Wydanie V, Wydawnictwo Helion, 2017.
  6. Danuta Mendrala, Marcin Szeliga: Praktyczny kurs SQL. Wydanie III, Wydawnictwo Helion, 2015.
  7. Adam Freeman: HTML5. Przewodnik encyklopedyczny, Wydawnictwo Helion, 2013.
  8. Eric Freeman, Elisabeth Robson: HTML5. Rusz głową!, Wydawnictwo Helion, 2012. 

Wybrane strony:

  1. Instrukcja instalacyjna XDebug.
  2. PHPUnit w aplikacji Laminas.
  3. Dokumentacja dla PHPUnit.
  4. Opis atrybutów <phpunit>.

Książki Helion