Instalace PHPUnit na Windows
Minulou sobotu (26.9.2009) se konala již tradiční Poslední Sobota . Po delší odmlce, kdy jsem se z různých důvodů nemohl účastnit, jsem se na tuto brněnskou vypravil. Těšil jsem se o to více, když byl zveřejněn oficiální program, který se převážně týkal testování. Když to vemu od konce tak Davídek G. opět nešetřil humorem a tak svou prezentaci o 4řech slajdech ovládal zapomocí “WhitekPhone Aplikace”((vypnutý iPhone ovládal zapomocí Whitka tlačítka zpět a vřed)) . Jeho přednáška byla o tom, jak Nette Framework testuje sám sebe, nicméně její zajímavost byla zastíněna předchozí přednáškou Martina Mayera o PHPUnit. Jeho přednáška mě inspirovala na tolik, že jsem se včera pustil do zprovozňování/instalace.
A to je právě to, o čem bych chtěl dneska psát.
Instalujeme PEAR
Předpokládejme, že máte složku s PHP na co nejdostupnějším místě a tím je C:\PHP
. Než začneme se samotnou instalací PHPUnit-u, musíme nainstalovat rozšíření PHP zvané PEAR. Jelikož jsem osoba od přírody líná a PEAR považuji za věc těsně před vyhynutím, tudíž jsem jej nikdy nepotřeboval a neistaloval. Vydal jsem se pátrat po instalačním balíčku a ejhle nenašel jsem. Tak jsem začal pátrat jak na to. Narazil jsem na http://pear.php.net/go-pear jedná se o PHP script, který za vás PEAR stáhne, nainstaluje a dokonce nastaví. Takže script zkopírujeme, uložíme do souboru C:\PHP\go-pear.php
a spustíme comand lajnu s s administrátorskými právy (zmáčkni Win+R napiš cmd a odentruj). Ano takovou tu nejošklivější část windows, která se moc nepoužívá. Nyní přejděte do složky C:\PHP
(cd C:\PHP odentrovat) a napište php go-pear.php
spustí se instalační proces PEARu, který vás povede krok za krokem. (Pokud používáte PHP5.3 bude to na vás při instalaci řvát, že jsou některé funkce Deprecated - toho si nevšímejte). Po instalaci vznikne ve složce s PHP soubor PEAR_ENV.reg
, ten spusťte, potvrďte administrátorská práva a je hotovo - PEAR je nainstalován.
Instalace PHPUnit
PEAR máme nainstalován a tak můžeme nainstalovat samotný PHPUnit. Sputíme comand lajnu, přejdeme do složky C:\PHP
a zadáme příkaz pear channel-discover pear.phpunit.de
a poté pear install phpunit/PHPUnit
. PHPUnit se sám nainstaluje a je hotovo.
Akutalizace
Nedávno jsem potřeboval znovu nainstalovat PHPUnit a narazil jsem na chybu.
Unknown remote channel: pear.symfony-project.com
Did not download optional dependencies: pear/Image_GraphViz, pear/Log, use --alldeps to download automatically
phpunit/PHPUnit requires package "channel://pear.symfony-project.com/YAML" (version >= 1.0.2)
phpunit/PHPUnit can optionally use package "pear/Image_GraphViz" (version >= 1.2.1)
phpunit/PHPUnit can optionally use package "pear/Log"
phpunit/PHPUnit can optionally use PHP extension "xdebug" (version >= 2.0.5)
No valid packages found
install failed
Následující příkaz problém vyřeší:
pear channel-discover pear.symfony-project.com
Testujeme jestli se PHPUnit nainstaloval
Vytvoříme novou složku třeba C:\test
a vytvoříme v ní dávkový soubor - třeba RunTest.bat
. Jeho obsah bude jednoduchý - jeden řádek.
c:\PHP\phpunit.bat ./
Teď už vytvoříme samotný první test. Takže nový soubor MujTest.php
(soubor musí končit na Test.php aby ho phpunit spustil). Jeho obsah bude už o něco složitější a vezme ho z příkladu.
<?php
require_once 'PHPUnit/Framework.php';
class StackTest extends PHPUnit_Framework_TestCase
{
public function testPushAndPop()
{
$stack = array();
$this->assertEquals(0, count($stack));
array_push($stack, 'foo');
$this->assertEquals('foo', $stack[count($stack)-1]);
$this->assertEquals(1, count($stack));
$this->assertEquals('foo', array_pop($stack));
$this->assertEquals(0, count($stack));
}
}
?>
A opět spustíme comand lajnu, přejdeme do složky C:\test
a spustíme RunTest.bat
. Pokud vám konzole vypíše následující text, blahopřeji, vaše snaha byla úspěšná. Nyní můžete začít psát a testovat jak je libo.
C:\test>RunTest.bat
C:\test>c:\PHP\phpunit.bat ./
PHPUnit 3.4.0 by Sebastian Bergmann.
.
Time: 0 seconds
OK (1 test, 5 assertions)
C:\test>
Důležité odkazy: http://phpunit.de , http://pear.php.net
Pokud se vám něco nepodařilo, rád v komentářích poradím.