venerdì, dicembre 03, 2004

PHP Unit Test

Si proprio i test unitari oggi sono alla base di una buona programmazione e allora eccoci qua a provarli! Per prima cosa scarichiamoci il tgz contenente phpunit da sourceforge.net; scompattiamolo e mettiamo il file phpunit.php nella nostra cartella di lavoro (gli altri file non ci servono). Creaiamo un file nuovo e cominciamo:

  1. includiamo nello script il nostro phpunit.php
    include_once('./phpunit.php');

  2. creaiamo un classe Test che eredita da TestCase
    class Prova extends TestCase{
    function Prova($name)
    {
    $this->TestCase($name);
    }

  3. ora non ci resta che creare le funzioni di inizializzazione,
    function setUp()
    {
    $this->intVal = 1;
    $this->strVal = 'foo';
    }
    ovviamente potete inizializzare anche una classe e poi su quella lavorare, io uso le variabili solo per farvi vedere le varie possibilita senza dovermi dilungare su 1000 file!

  4. A questo punto posso avvalermi delle seguenti funzioni :
    $this->assert(parametro di valutazione, commento in caso di errore);
    $this->assertEquals(parametro uno, parametro due,commento in caso di errore);
    $this->assertRegexp(pattern, testo,commento in caso di errore );
    esempio :
    function testFail1()
    {
    $this->assert($this->intVal == 0, "1 == 0");
    }

  5. questa classe è finita, ora non ci resta che dire (fuori dalla classe eh!) al nostro sistema di testing quale di queste funzioni processare:
    $suite = new TestSuite;
    $suite->addTest(new Prova("testFail1"));

    if (isset($only)) {
    $suite = new TestSuite($only);
    }

    $result = new PrettyTestResult;
    $suite->run($result);
    $result->report();

  6. i giochi sono fatti ;) non vi resta che fare qualche prova, ovviamente se graficamente avete dei problemi è perchè non avete incluso il file stylesheet.css che è sempre dentro il pacchetto phpunit.tgz


direi che non ci sia altro da dire sui test unitari, ora si deve passare alla fase Test Personale per imparare meglio la cosa! Alleghero presto il codice descritto per darvi maggiore possibilità di studio! a presto...