PHP - jak testovat pomocí PHPUnit

PHP - jak testovat pomocí PHPUnit

Bohužel se na českém webu nenachází žádný strohý článek s praktickým příkladem, jak základně a napřímo použít k testování PHP aplikací framework PHPUnit. Našel jsem jen obsáhlejší návod jak používat PHPUnit v PhpStormu (a ten každý nemá) a pak ještě s použitím frameworku Codeception (to nechci).

Jak tedy na to? V tomto článku se na to podíváme pěkně stručně včetně příkladu použití bez zbytečné omáčky okolo...

 

Příklad PHPUnit s Nette

Nainstalujeme phpunit přes composer

composer require --dev phpunit/phpunit

Vytvoříme soubor tests/ParserTest.php, který bude testovat soubor App\Model\Parser.php viz github

 

První kontrola

Budeme chtít ověřit, zda metoda getParts() vrátí null, když SimpleXMLElement $parts neobsahuje požadovaná data a pak zda vrátí pole, když obdrží požadovaná data:

    public function testGetParts()
    {
        $parser = new Parser();
        $this->assertNull($parser->getParts(new \SimpleXMLElement("<parts> </parts>")), 'assert is null');
        $this->assertIsArray($parser->getParts(new \SimpleXMLElement("<parts> <part> <item> </item> </part> </parts>")), 'assert is array');
    }

 

Spustíme první phpunit test

./vendor/bin/phpunit tests/ParserTest.php
PHPUnit 10.0.15 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.1.2-1ubuntu2.11

.                                                                   1 / 1 (100%)

Time: 00:00.003, Memory: 6.00 MB

OK (1 test, 1 assertion)

 

Tento test vrátil OK, takže proběhl bez chyb.

 

Resumé

Doporučuji si nyní přečíst více článků o PHPUnit, toto je opravdu minimalistický úvod.

Dále je vhodné získat přehled o dalších assertech, protože je jich opravdu hodně:

  • assertFalse
  • assertTrue
  • assertContain­s
  • assertNull
  • assertIsArray
  • assertSame
  • assertEquals
  • assertNotEqual­s
  • assertEmpty
  • assertLessThan
  • assertGreaterThan
  • assertInstanceOf
  • assertIsBool
  • assertFileExists
  • assertDirectoryExists
  • assertDirectoryIsReadable
  • a mnoho dalších

 

Možné chyby

Při použití PHPUnit se můžeme setkat např. s chybou:

Error: Class "App\Model\Parser" not found

 

Tu opravíme pomocí require či autoloaderem:

require __DIR__ . "/../app/model/Parser.php";

 

 

Odkazy

Zdrojové soubory na githubu

Video o testování Jakub Filla - testovaní Nette aplikací pomocí PHPUnit

 

Jak se ti článek líbil?

Komentáře (0)

Přidat komentář