Ještě než se definitivně rozloučím s PHP, chci si napsat pár poznámek o dvou testovacích frameworcích pro PHP – jedním je SimpleTest a tím druhým PHPUnit.
Na SimpleTest se mi líbí:
- Extrémně jednoduché na začlenění do projektu – v podstatě stačí stáhnou ZIP, rozbalit ho někam po bok aplikace, napsat test a spustit ho v prohlížeči
- Slušně schopný framework
- Podpora pro mockování
- Umí testovat reálnou webovou stránku v prohlížeči (assertTitle, assertHeader a podobně)
- Existuje modul pro Drupal
Pro PHPUnit hovoří:
- Excelentní možnosti frameworku – parametrizované testy, testy
v anotacích (zajímavá věc, vůbec nemusíte psát separátní testy,
jen třeba nad metodu Add do komentáře přidáte
@assert (1, 2) == 3
a „anotační test“ bude vykonán), podpora testdox (generování specifikace přímo ze zdrojového kódu), BDD, mockování, databázové testy, generování kódu z testů, asserty pro XML (i když ty aktuálně nemohou fungovat kvůli bugům v PHP) a tak dále. Možnosti PHPUnit mě celkem ohromily, takový rozsah jsem nečekal. - De-facto standard, protože si ho pro unit testy vybral Zend Framework a k přesunu od SimpleTestu k PHPUnitu dochází i jiných významných projektech (např. Joomla)
- Code coverage
- Integrace se Seleniem pro testování webů v prohlížeči
- Integrace s phpUnderControl, CruiseControl a podobně
Nevýhody PHPUnit:
- V porovnání se SimpleTestem náročná instalace (závislost na PEARu, nutnost měnit PATH proměnnou prostředí apod.)
- V současné verzi je nedořešená možnost verzování PHPUnit po boku vlastní aplikace (někteří vývojáři, mě nevyjímaje, mají rádi co nejvíc externích závislostí v Subversion nebo v jiném VCS společně s aplikací; s PHPUnit je to problém, protože se instaluje někam do C:\php, ne po bok aplikace)
- GUI neexistuje, v současnosti jediným podporovaným rozhraním je příkazový řádek. Tohle mi hodně vadilo.
Na jednoduchý projekt bych asi doporučil SimpleTest především proto, že ji lze jednoduše přidat do version control a do README.txt ostatním vývojářům jen napíšete, aby jednoduše v prohlížeči navštívili testrunner.php – to je celé. PHPUnit je naproti tomu špičkovým frameworkem, u kterého ale zatím v současné verzi zaplatíte daň v podobě obtížnější instalace a nižší použitelnosti.
Používám PHPUnit bez instalace právě jen přes externals v SVNku a zatím jsem s tím neměl problém.