Co je PHPUnit, jak funguje a jak se s ním pracuje?

Obsah
PHPUnit je populární testovací framework pro jazyk PHP, který slouží k psaní a spouštění automatizovaných testů. Je neocenitelným nástrojem při vývoji webových aplikací, protože umožňuje vývojářům ověřit, že jejich kód funguje správně a zůstává stabilní i po budoucích změnách.
Proč používat PHPUnit?
- Automatizace testování: Místo manuálního testování můžete jedním příkazem spustit stovky testů.
- Odhalení chyb včas: Testy upozorní na chyby dřív, než se dostanou do produkce.
- Snadnější refaktoring: Díky testům víte, že vaše úpravy nerozbily stávající funkčnost.
Instalace PHPUnit
Nejčastější způsob instalace je pomocí Composeru:
composer require --dev phpunit/phpunit
Po instalaci můžete PHPUnit spustit pomocí příkazu:
./vendor/bin/phpunit
Jak funguje PHPUnit
PHPUnit funguje tak, že spouští metody, které definujete jako testy. Každý test by měl být nezávislý a měl by testovat jednu konkrétní část kódu. PHPUnit očekává, že vaše testovací třídy budou dědit z PHPUnit\Framework\TestCase
.
Reálný příklad: testování vlastní PHP třídy
V následujícím příkladu vytvoříme jednoduchou třídu Kalkulacka
s metodami pro sčítání a dělení, a k ní napíšeme odpovídající testy.
1. Třída, kterou chceme testovat – Kalkulacka.php
<?php
class Kalkulacka
{
public function secti(int $a, int $b): int
{
return $a + $b;
}
public function vydel(int $a, int $b): float
{
if ($b === 0) {
throw new InvalidArgumentException("Nelze dělit nulou.");
}
return $a / $b;
}
}
2. Testovací třída – tests/KalkulackaTest.php
<?php
use PHPUnit\Framework\TestCase;
require_once __DIR__ . '/../Kalkulacka.php';
class KalkulackaTest extends TestCase
{
private Kalkulacka $kalkulacka;
protected function setUp(): void
{
$this->kalkulacka = new Kalkulacka();
}
public function testSectiVraciSpravnySoučet()
{
$vysledek = $this->kalkulacka->secti(3, 4);
$this->assertEquals(7, $vysledek);
}
public function testVydelVraciSpravnyVysledek()
{
$vysledek = $this->kalkulacka->vydel(10, 2);
$this->assertEquals(5.0, $vysledek);
}
public function testVydelVyhodiVyjimkuPriDeleniNulou()
{
$this->expectException(InvalidArgumentException::class);
$this->kalkulacka->vydel(10, 0);
}
}
3. Spuštění testů
./vendor/bin/phpunit tests/KalkulackaTest.php
Výstup testu
PHPUnit 10.x by Sebastian Bergmann and contributors.
... 3 / 3 (100%)
Time: 00:00.012, Memory: 6.00 MB
OK (3 tests, 3 assertions)
Konfigurační soubor phpunit.xml
Pro větší projekty je praktické vytvořit soubor phpunit.xml
, kde nastavíte konfiguraci jako výchozí adresář s testy, autoloading atd.
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Aplikace">
<directory>./tests</directory>
</testsuite>
</testsuites>
</phpunit>
Nejužitečnější asserty
assertEquals($očekávaná, $skutečná)
– porovná dvě hodnotyassertTrue($podmínka)
– ověří, že podmínka je pravdiváassertFalse($podmínka)
– ověří, že podmínka je nepravdiváassertInstanceOf($třída, $objekt)
– ověří typ objektu
Závěr
PHPUnit je velmi silný nástroj pro testování PHP aplikací. Pomáhá psát spolehlivější a kvalitnější kód a je základem tzv. test-driven developmentu (TDD). Pokud s testováním začínáte, doporučujeme začít s jednoduchými testy a postupně rozšiřovat pokrytí kódu.
Poslední aktualizace článku proběhla 10.4.2025.
OBJEDNAT SEO OPTIMALIZACI