: Home / PHP / artykuły / Instalacja PHP_Unit

Warning: file_get_contents(http://graph.facebook.com/http://youthcoders.net/index.php): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /var/www/old-yc/plugins/content/addthis.php on line 38
Instalacja PHP_Unit
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
piątek, 16 kwietnia 2010 17:46

Coraz częściej można spotkać się z pojęciem testów jednostkowych [ang. unit tests]. Dobre testy jednostkowe pozwalają wydatnie zwiększyć jakość wytwarzanego kodu, zmniejszyć liczbę błędów oraz pozwolić na zdrowsze życie programiście. Jeśli nigdy nie spotkałeś się z pojęciem testów jednostkowych to zapraszam do lektury artykułu o Unit testach. W poniższym artuklule postaram się pokazać jak zainstalować bardzo przyjemny framework - PHP_Unit.

 

Na początek

Przed przystąpieniem do wykonania artykułu warto wiedzieć / mieć / umieć:

  • Działający serwer www - ja będę instalował na Wampie
  • Mieć działające repozytorium PEAR
  • Znać podstawy wiersza poleceń

 

Instalacja

Otwórz wiersz poleceń

Wpisz:

1.pear channel-discover pear.phpunit.de

Powinieneś zobaczyć:

1.Adding Channel "pear.phpunit.de" succeeded
2.Discovery of channel "pear.phpunit.de" succeeded

Jeśli poszło dobrze, wpisz:

1.pear channel-discover  pear.symfony-project.com

powinieneś zobaczyć:

1.Adding Channel "pear.symfony-project.com" succeeded
2.Discovery of channel "pear.symfony-project.com" succeeded

Jeśli i tym razem poszło dobrze, przejdź do instalacji właściwej:

1.pear install phpunit/PHPUnit

W przypadku błędów

U mnie w tym momencie pojawiło się:

01.Did not download optional dependencies: pear/Image_GraphViz, pear/Log, symfony/YAML, use --alldeps to download automatically
02.phpunit/PHPUnit requires PEAR Installer (version >= 1.8.1), installed version is 1.7.2
03.phpunit/PHPUnit can optionally use package "pear/Image_GraphViz" (version >= 1.2.1)
04.phpunit/PHPUnit can optionally use package "pear/Log"
05.phpunit/PHPUnit can optionally use package "symfony/YAML" (version >= 1.0.2)
06.phpunit/PHPUnit can optionally use PHP extension "soap"
07.phpunit/PHPUnit can optionally use PHP extension "xdebug" (version >= 2.0.5)
08.No valid packages found
09.install failed

O tym, co w takiej sytuacji można zrobić przeczytasz w artykule o instalacji nowszego PEAR instalera. W tym wypadku starczyło u mnie polecenie:

1.pear upgrade pear

 Na ekranie powinno się pojawić coś podobnego:

1.phpunit/PHPUnit can optionally use PHP extension "soap"
2.phpunit/PHPUnit can optionally use PHP extension "xdebug" (version >= 2.0.5)
3.downloading PHPUnit-3.4.12.tgz ...
4.Starting to download PHPUnit-3.4.12.tgz (254,746 bytes)
5......................................................done: 254,746 bytes

Gdyby ta ścieżka nie działała, to może warto zajrzeć do dokumentacji PHP_Unit.

 

Pierwszy test

Skoro udało się nam już poprawnie zainstalować PHP_Unit, to czas uruchomić pierwszy test.

Jako, że ma to być prosty przykład, nie będę się wiele wysilał. Skopiuję przykład z dokumentacji:P

01.require_once 'PHPUnit/Framework.php';
02.class StackTest extends PHPUnit_Framework_TestCase
03.{
04.    public function testPushAndPop()
05.    {
06.        $stack = array();
07.        $this->assertEquals(0, count($stack));
08.        array_push($stack, 'foo');
09.        $this->assertEquals('foo', $stack[count($stack)-1]);
10.        $this->assertEquals(1, count($stack));
11.        $this->assertEquals('foo', array_pop($stack));
12.        $this->assertEquals(0, count($stack));
13.    }
14.}
15.?>

Skopiuj powyższy kod i umieść go jaki `UnitTest.php' w swoim document root (choć chyba może być w dowolnym katalogu). Następnie:

Otwórz wiersz poleceń i przejdź do katalogu z plikiem `UnitTest.php' (u mnie to było):

1.F:
2.cd vhosts/localhost

Uruchom test:

1.phpunit UnitTest

1.PHPUnit 3.4.12 by Sebastian Bergmann.
2..
3.Time: 0 seconds, Memory: 4.00Mb
4.OK (1 test, 5 assertions)

 

Błędny test

Poszło aż za dobrze. To co zostało wyświetlone w wierszu poleceń pozwala nam stwierdzić, że testy przeszły poprawnie. Zróbmy coś, aby nie przeszły poprawnie. Zmieńmy linię 13 w powyższym listingu na:

1.$this->assertEquals(0, count($stack));

Po wywołaniu testów:

1.phpunit UnitTest

01.PHPUnit 3.4.12 by Sebastian Bergmann.
02.F
03.Time: 0 seconds, Memory: 4.00Mb
04. 
05. 
06.There was 1 failure:
07. 
08. 
09.1) StackTest::testPushAndPop
10.Failed asserting that <integer:0> matches expected <integer:1>.</integer:1></integer:0>
11. 
12. 
13.F:\vhosts\localhost\UnitTest.php:16
14. 
15. 
16.FAILURES!
17.Tests: 1, Assertions: 5, Failures: 1.

No, takie coś mnie zadowala :). Skoro po zmianie oczekiwanej wartości test nie przechodzi, to można uznać, że testuje poprawnie.

 

Co dalej

 

Zobacz podobne artykuły

 

Dodaj komentarz

Zostało: 1000 symboli


Kod antysapmowy
Odśwież