PHPUnit je Framework, který je určený pro psaní jednotkových testů v programovacím jazyce PHP. Spadá do rodiny jednotkových testů, které jsou postavené na architektuře xUnit.

Účel PHPUnit

PHPUnit je založený na předpokladu, že vývojáři by měli být schopní najít chyby ve svém čerstvě committovaném kódy rychle a ohodnotit, že nedošlo k žádnému zhoršení kódu v dalších částech báze kódu. Podobně jako v jiných frameworcích pro jednotkové testy, PHPUnit používá assertion pro ověření, že chování specifické komponenty, tedy „unit“, která je testovaná odpovídá očekávání.

Cílem jednotkového testování je izolovat jednotlivé části programu a ukázat, že tyto jednotlivé části jsou správné. Jednotkové testy nabízí přísný psaný závazek, který musí daná část kódu splňovat. Výsledkem je, že se chyby daří nacházet v dřívější etapě vývojového cyklu.

PHPUnit dokáže zobrazovat výstupy testovacích výsledků v mnoha různých formátech, včetně JUnit XML nebo TestDox.

Architektura

Pro odstranění komplikací, které přináší, když vývojář zkouší testovat software, který je nutné integrovat, skrze webový server, tento Framework využívá příkazovou řádku. To umožňuje, aby jednotlivé třídy byly do hloubky otestovány dříve, než jsou integrovány dohromady.

Klíčové koncepty PHPUnit

  • Assertion. Assertion přidává do testu kritérium, podle kterého je kontrolováno, že kód plní svou roli.
  • Stub. Pokud část kódu závisí na externím objektu, je možné použít stub, který má roli dvojníka tohoto externího objektu. To umožňuje soustředit se při testu pouze na tuto specifickou část kódu.
  • Mock. Mock funguje podobně jako stub, ale kontroluje, že externí objekt dostal od testovaného kódu správné requesty.
  • Annotation. Unikátní typ syntaktických metadat, která je možné přidat ke kódu psanému v PHP. Používá se k popisu zdrojového kódu, může například definovat, které metody mají být zavolány po každé testovací metodě v testovací třídě.

Výhody použití PHPUnit

  • Zkrácení času vývoje. PHPUnit pomáhá nacházet chyby v dřívějších etapách vývojového cyklu. Jedná se jak o chyby kódu, tak o chybějící části specifikace jednotky kódu.
  • Usnadnění změny. Změny v kódu s sebou běžně nesou rizika. PHPUnit testy umožňují ověřit, že moduly stále fungují, jak mají.
  • Zjednodušení integrace. PHPUnit testování může snížit nejistotu v jednotlivých jednotkách a může tak být použité k testovacímu přístupu od spodu. Testování jednotlivých částí programu a následně testování podskupin kódu vede k usnadnění následného integračního testování.

Nevýhody použití PHPUnit

  • Riziko použití mocků. Použití mocků umožňuje mockovat chráněné metody, volat neexistující metody a mocky nereagují na neočekávaná volání testovacích doublů. Proto použití PHPUnit může vést spíše k hackování objektů nežli k návrhu konzistentního a funkčního kódu.