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

 

Komentáře

Vaše reakce na PHP - jak testovat pomocí PHPUnit

Související obsah

php

programovani

testovani

phpunit

Reference

Podívejte se na naše reference

Prohlédnout

Aplikace

Podívejte se na naše aplikace

Prohlédnout

Co umíme?

Podívejte se co umíme

Prohlédnout

Co umíme?

Vytváříme sofistikované aplikace pro náročné

Od webových aplikací přes android až po převodové můstky či složité informační systémy.

Podívejte se k nám

Máte ještě čas? Podívejte se na další rubriky

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.