2013-03-06

Testy jednostkowe - Instalacja PHPUnit

Zanim ochoczo zabiorę się do instalacji PHPUnita najpierw warto przypomnieć: po co to komu? :) Testy jednostkowe (ang. unit test) służą do częstego weryfikowania poprawności działania pojedynczych elementów programu takich jak np. obiekty. Przykładowo gdy piszemy klasę modelu korzystając z jakiegoś frameworka PHP, warto napisać dla niej Unit testy. Dzięki temu po każdej zmianie kodu aplikacji, możemy zyskać pewność, że kod działa poprawnie bez żmudnego manualnego testowania. Tak więc poddajemy fragment programu testowi, który wykonuje go i porównuje wynik (np. zwrócone wartości, stan obiektu, wyrzucone wyjątki) z wynikami oczekiwanymi. 
Co nam to daje, poza wysiłkiem implementacji test casów? Otóż zyskujemy możliwość błyskawicznego wychwycenia i poprawienia błędu - zanim jeszcze zostanie wprowadzony na środowisko produkcyjne.

OK to tyle jeśli chodzi o teorię - pora na praktykę. A w praktyce... cóż PHPUnit żądzi i basta :) Jest to swego rodzaju złoty standard w temacie testowania kodu PHP. Ale jak go zainstalować?

Zwyczajnie :) PEARem:

sudo pear config-set auto_discover 1
sudo pear install pear.phpunit.de/PHPUnit

W idealnym przypadku wystarczy następnie zainstalować PHPUnit
sudo apt-get install phpunit

i już można rozpocząć testy...
... niestety wielu użytkowników ubuntu napotka tu pierwsze schody, mi też się to przytrafiło. Po napisaniu przykładowego testu zabrałem się ochoczo do uruchomienia testu... lecz próba uruchomienia z terminala phpunit powodowała tylko komunikat:

PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/bin/phpunit on line 39


Okazuje się, że niektóre wersje Ubuntu zawierają błąd na szczęście łatwo go samodzielnie naprawić uruchamiając po kolei komendy:

sudo pear config-set bin_dir /usr/bin
sudo pear config-set doc_dir /usr/share/php/doc
sudo pear config-set php_dir /usr/share/php
sudo pear config-set cfg_dir /usr/share/php/cfg 
sudo pear config-set data_dir /usr/share/php/data
sudo pear config-set test_dir /usr/share/php/test
sudo pear uninstall phpunit/PHPUnit
sudo pear channel-discover pear.phpunit.de
sudo pear install --alldeps phpunit/PHPUnit

Brak komentarzy:

Prześlij komentarz