unodeitanti.com

Configurare PHPUnit con XAMPP ed iniziare a fare qualche test

by demo on Feb.03, 2010, under php

Ieri ho fatto la notte in bianco perchè volevo installare PHPUnit a tutti i costi sulla mia macchina, che è Windows. Voglio installare PHPUnit perchè voglio intraprendere la strada del Test Driven Programming. Bene bene. La via del WAMPSERVER è andata male. Così oggi ho scaricato XAMPP. Il file di installazione è decisamente più pesante di wampserver, infatti installa qualche cosa in più, come mercury, filezilla… un sacco di cosette che cercherò di testare nei prossimi giorni. (mi piace sta cosa che installo un pochino a caso le cose).

Veniamo al dunque e partiamo con un’immgine eloquente, causata dalla corretta installazione di PHPUnit. Decisamente molto più semplice. Se avete letto il post precedente, non avrete bisogno di spiegazioni:

Corretta installazione di PHPUnit

Corretta installazione di PHPUnit

Faccio un breve riassunto dell’accaduto:

  1. Scarico XAMPP e lo installo.
  2. Lancio alla rinfusa dei comandi come se stessi ancora operando con wampserver …
  3. Ad un certo punto lancio “pear install phpunit/PHPUnit” e tutto funziona

In sostanza con XAMPP posso passare direttamente all’installazione di PHPUnit perchè, al contrario di wampserver, ha già PEAR installato. Molto bene. Adesso vediamo come posso usare PHPUnit per fare dei tests alle mie applicazioni php. Ne creerò una da zero, così potrete usufruire del mio sforzo =). (Speriamo che sia utile a qualcuno).

Creazione di un progetto per testare php con PHPUnit

Creazione di un progetto per testare php con PHPUnit

Dopo aver creato il progetto, ho creato una classe “Giorni”. Questo esempio, ha uno scopo “sintattico” e non “semantico”. Non so quanto senso abbia creare una classe di questo tipo, ma lo scopo di questo post è mostrare come si fanno test con PHPUnit e non come si programma ad oggetti =). Va da se che ora vi beccate la classe più inutile della storia (occhio che nell’immagine c’è un errore: manca la keyword “function” prima di getNomeGiorno. Se non correggete questo errore, ovviamente non potrete generare l’unità di test):

ClasseInutile

Classe Inutile =)

Potevo anche evitare di programmare ad oggetti per un esempio così banale … Fatto sta che adesso arriva il bello: come creo l’unità di test per questo file? Adesso dobbiamo fare click con il tasto destro del mouse sul nostro file, quindi …

Come creare un'unità di test per una classe PHP

Come creare un'unità di test per una classe PHP

Con questo comando verrà generata un po’ di roba. Vi spiego: come potete notare, il nostro progetto di Netbeans contiene una cartella Source files ed una Include Path. Dopo questa operazione, avremo anche la cartella Test files. Nel frattempo, ho creato il primo test. Il test ha il compito di verificare che la classe funzioni correttamente. Mi aspetto che getNomeGiorno di 3, mi restituisca “Mercoledì”. Ho deciso che il programma deve funzionare in questo modo o comunque mi aspetto che si comporti in questo modo quindi …

Un primo test sbagliato con PHPUnit

Un primo test sbagliato con PHPUnit

Accidenti è sbagliato. Ovviamente l’errore era voluto. Infatti noi abbiamo chiesto il giorno numero 3 fosse Mercoledì. Il test ci segnala che getNomeGiorno non funziona correttamente. Infatti 3, per la funzione, non è la posizione ma l’indice. Andiamo subito a correggere la classe in  … ”return $this->nomi[$IndiceGiorno-1];”. La posizione 3, infatti, è l’indice 2. Gli umani contano da uno mentre gli array di php partono da 0. Dopo aver riscritto il codice, rilanciamo il test premento Alt-F6. Ecco il risultato:

Esempio di un test corretto con PHPUnit e Netbeans

Esempio di un test corretto con PHPUnit e Netbeans

Il nostro programma è stato testato correttamente. Ovviamente l’argomento non si estingue qui. Ma sicuramente può dare spunti su come iniziare a programmare partendo dai test. Non ne so più di quello che leggete qui, spero però che sia abbastanza per aiutare qualcuno in difficoltà a partire. =)

Buoni test a tutti.

Condividi questo post sui tuoi social network preferiti:
  • Print this article!
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Twitter
  • Wikio IT
  • Live
  • RSS
  • StumbleUpon
  • Technorati

blog comments powered by Disqus

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!