Installare PHPUnit su MAMP
Ciao a tutti,
ho notato che l’installazione e la preparazione dell’environment per l’utilizzo di PHPUnit su MAMP non è poi così semplice … quindi vorrei fare un pò di chiarezza e dare delle linee guida per eseguire velocemente l’installazione di questo fantastico strumento per lo unit testing.
Informazioni sulla mia installazione :
- MAMP 2.0.5 (ma non dovreste aver problemi anche con versione più datate)
- PHP 5.3.6
- Mac OS X Lion 10.7
Installiamo PHPUnit :
Dato che MAMP permette di gestire versioni multiple di PHP, decidiamo innanzitutto su che versione di PHP installare PHPUnit … nel mio caso ho scelto la 5.3.6.
Quindi apriamo il Terminale e digitiamo :
cd /Applications/MAMP/bin/php/php5.3.6/bin
sudo ./pear channel-update pear.php.net
sudo ./pear upgrade pear
Nel caso in cui PEAR vi segnali questo messaggio :
Notice: unserialize(): Error at offset 276 of 1133 bytes in Config.php on line 1050
ERROR: The default config file is not a valid config file or is corrupted.
Andate nella directory “/Applications/MAMP/bin/php/php5.3.6/conf” e rinominate il file “pear.conf” in “_pear.conf”, poi eseguite nuovamente i comandi
Bene, ora procediamo ad aggiungere i canali ed a eseguire la vera e propria installazione di PHPUnit
sudo ./pear channel-discover pear.phpunit.de sudo ./pear channel-discover pear.symfony-project.com sudo ./pear install --alldeps phpunit/PHPUnit
Ora PHPUnit è installato … proviamo a digitare :
./phpunit --version PHPUnit 3.6.4 by Sebastian Bergmann.
E dovremmo visualizzare la versione di PHPUnit … questo è un buon segno, significa che funziona!
Ma ecco un problemino (e ti pareva) … nel Terminale siamo costretti a specificare ogni volta il percorso di MAMP dove risiede la versione di PHPUnit che abbiamo appena installato; non se ne parla proprio!!
Quindi risolviamo facilmente il problema (siamo ancora nella directory “/Applications/MAMP/bin/php/php5.3.6/bin”) :
sudo cp ./phpunit /usr/bin/phpunit
Bene, ora possiamo, eseguire “phpunit” dal nostro terminale senza doverci preoccupare di andare a specificare la cartella di MAMP dove l’abbiamo installato.
Un’ultima cosa … nel caso in cui siate utilizzatori del framework FuelPHP, potrebbe succedere una cosa poco simpatica quando provate ad eseguire lo unit test, ovvero con il comando “php oil test” potrebbe ritornare un messaggio :
Error: PHPUnit does not appear to be installed.
Please visit http://phpunit.de and install.
Ma l’abbiamo già installato!!!!!! Il problema è che il comando “php” viene eseguito dalla cartella /usr/bin e non dalla versione di MAMP che ci aspettiamo!
Beh allora risolviamo anche questo, verifichiamo innanzitutto da dove viene eseguito il comando aprendo il Terminale e digitando :
rfc-1918:bin davide$ which php /usr/bin/php
Abbiamo la prova che sta eseguendo PHP dalla cartella sbagliata … sistemiamolo :
rfc-1918:bin davide$ cd /usr/bin/
rfc-1918:bin davide$ sudo mv php _php
Password:
rfc-1918:bin davide$ sudo ln -s /Applications/MAMP/bin/php/php5.3.6/bin/php php
rfc-1918:bin davide$ php --version
PHP 5.3.6 (cli) (built: Sep 15 2011 11:22:25)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
with XCache v1.3.1, Copyright (c) 2005-2010, by mOo
In poche parole rinominiamo l’attuale file PHP in “_php” in modo che non venga eseguito e creiamo un Symlink per indicare al Terminale che al comando “php …” deve essere eseguito “/Applications/MAMP/bin/php/php5.3.6/bin/php”.
Bene siamo operativi … ora eseguendo “php oil test” dalla directory del nostro progetto FuelPHP dovrebbe funzionare tutto regolarmente







Forse ho parlato troppo presto !!
PHPUnit sembra instalalto correttamente e posso accedervi da tutte le cartelle.
PHPUnit 3.6.5 by Sebastian Bergmann.
Ma quando lancio un testare una classe di prova con il commando
PHPUnit ArrayTest
No ritorna neiente una riga vuota
Qualche idea di aiuto?
grazie
Ciao maxi, ho testato quello che mi dici e funziona.
Ti lascio un codice di test e verifica se funziona, al max lo vediamo insieme :
1- Sulla Scrivania ho creato il file ArrayTest.php
2- Al suo interno ho inserito questo codice : http://scrp.at/aSB
3- Poi da terminale mi sono spostato nella cartella Desktop del mio utente ed ho digitato “phpunit ArrayTest”
Risultato :
“FAILURE…”
Questo è corretto dato che nel test ho appositamente testato che una variabile fosse un array, mentre era una stringa.
Facci sapere
Ciao!
Hey Bill,
Si ora funziona era un’errore nel include_path.
all’inzio del test io mettevo
require_once ‘PHPUnit/Framework.php’;
al posto di
include_once(‘PHPUnit/Autoload.php’);
Grazie del supporto !!!
Ciao
Molto bene!
Ciao!!!
Utile e ben fatto, mi hai fatto gudaganre un bel pò di tempo. grazie!!