Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Aplikacje pisane w Zend Framework 2 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 dla wybranego modułu. Do prawidłowego działania przykładu należy również zainstalować XDebug (https://xdebug.org/wizard.php) - potrzebny do generowania raportów testów jednostkowych w formie HTML.

Zaczynając przygodę z Zend Framework 2 powinniśmy zapoznać się z artykułem Pierwszy prosty projekt Zend Framework 2 w Eclipse PDT. Konfiguracja pliku phpunit.xml została oparta na szablonie modułu dostępnego na stronie https://github.com/zendframework/ZendSkeletonModule. Instalację można przeprowadzić ręcznie pobierając plik zip z powyższej strony, lub przechodząc do katalogu module w projekcie i wprowadzając w wierszu poleceń git clone git://github.com/zendframework/ZendSkeletonModule.git nazwa_nowego_modułu (rys. 1.). Więcej informacji o instalacji modułu można znaleźć na stronie http://framework.zend.com/manual/current/en/modules/zend.mvc.quick-start.html.

 

Instalowanie modułu w projekcie Zend Framework 2 - OSX

Rys. 1. Instalowanie modułu w projekcie Zend Framework 2 - OSX

 

Informacje o konfiguracji testów jednostkowych w katalogu tests można znaleźć na stronie http://framework.zend.com/manual/2.3/en/tutorials/unittesting.html. Więcej informacji na temat testów jednostkowych należy szukać na stronie dokumentacji PHPUnit https://phpunit.de/manual/5.4/en/index.html.

Kiedy środowisko pracy prawidłowo skonfigurowano i testy jednostkowe zostały już utworzone. Przystępujemy do konfiguracji pliku phpunit.xml (umieszczamy w katalogu tests). Jeśli korzystaliśmy z szablonu ZendSkeletonModule, przykładowy pliku powinien już istnieć (Listing 1). Plik phpunit.xml należy przystosować do własnych potrzeb - opis kodu umieszczony na listingu 2. Atrybuty <phpunit> opisano na stronie dokumentacji https://phpunit.de/manual/current/en/appendixes.configuration.html. Do wygenerowania raportów w formacie HTML należy skonfigurować element <logging> (rys. 2., rys. 3.). Drzewo całego projektu przedstawiono na rysunku 4.

 

Listing 1. Przykładowa zawartość pliku module/PnCms/tests/phpunit.xml

<phpunit bootstrap="./bootstrap.php" colors="true">
<testsuites>
<testsuite name="ZendSkeletonModule Test Suite">
<directory>./</directory>
</testsuite>
</testsuites>
</phpunit>

 

Listing 2. Poprawiona zawartość pliku module/PnCms/tests/phpunit.xml

<phpunit bootstrap="./Bootstrap.php" colors="true">
<!-- Dodanie biblioteki Zend Framework 2 do testów, jeśli nie znajduje się w katalogu vendor projektu -->
<php>
<env name="ZF2_PATH" value="/Users/yellow/libs/ZendFramework-2.4.9/library/" />
</php>
<!-- Uruchamianie testów umieszczonych w katalogu PnCmsTest -->
<testsuites>
<testsuite name="PnCms Test Suite">
<directory>./</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<!-- Testy tylko dla modułu PnCms -->
<directory>../../PnCms</directory>
<exclude>
<!-- Wyłączenie z testów plików php z katalogu tests -->
<directory suffix=".php">../tests</directory>
<!-- Wyłączenie z testów plików php z katalogu config -->
<directory suffix=".php">../config</directory>
<!-- Wyłączenie z testów pliku autoload_classmap.php -->
<file>../autoload_classmap.php</file>
<!-- Wyłączenie z testów pliku autoload_function.php -->
<file>../autoload_function.php</file>
<!-- Wyłączenie z testów pliku autoload_register.php -->
<file>../autoload_register.php</file>
<!-- Wyłączenie z testów pliku Module.php -->
<file>../Module.php</file>
</exclude>
</whitelist>
</filter>
<!-- Generowanie raportu z pokrycia kodu w formacie HTML. -->
<!-- Do wygenerowania raportu w formacie HTML należy najpierw zainstalować XDebug -->
<!-- (Code Coverage Analysis) -->

<logging>
<log type="coverage-html" target="./log/report" charset="UTF-8" yui="true" hightlight="true" lowupperbound="50" highlowerbound="80">
<log type="testdox" target="./log/testdox.html"></log>
</log>
</logging>
</phpunit>

 

Raport w formacie HTML z testów modułu PnCms

Rys. 2. Raport w formacie HTML z testów modułu PnCms

 

Raport z przetestowania klasy IndexController.php

Rys. 3. Raport z przetestowania klasy IndexController.php

 

Struktura katalogów, plików w projekcie - Eclipse

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

 

Warto przeczytać również:

Wybrane książki:

Strony internetowe:

 

Książki Helion