Esecuzione di test di phpunit utilizzando HHVM (HipHop)

Sto cercando di eseguire i test di unità PHPUnit via HHVM su un'installazione Ubuntu 12.04 (64-bit Server) virtuale. I test solitamente vengono eseguiti utilizzando un file phpunit.xml che si trova nella mia directory di test, che include un file di bootstrap per gestire il caricamento automatico e i test funzionano bene su una normale installazione di PHP. Tuttavia, continuo a ricevere:

HipHop Fatal error: File not found: File/Iterator/Autoload.php in /usr/share/php/PHPUnit/Autoload.php on line 64 

Durante l'esecuzione:

 hhvm -f /usr/bin/phpunit /path/to/my/testsDirectory/SomeTest.php 

E non sono stato in grado di capire come eseguire phpunit in hhvm usando un file bootstrap o di configuration … Qualsiasi aiuto sarebbe apprezzato.

HHVM 2.4+

HHVM 2.4.0 è stato appena rilasciato ed è dotato di supporto phpunit completo! Basta dare il path completo al binario dell'unità php, come questo:

 $ hhvm /usr/bin/phpunit 

Saluti!


HHVM 2.3

Testato questa guida passo passo da wiki HHVM e funziona. Ecco una guida semplificata:

Sul tuo progetto, aggiungi le seguenti voci al tuo file composer.json:

 "require-dev": { "phpunit/phpunit": "3.7.*", "phpunit/php-invoker": "1.1.3", "phpunit/dbunit": "1.2.3", "phpunit/phpunit-selenium": "1.3.2", "phpunit/phpunit-story": "1.0.2" } 
  1. Esegui hhvm composer.phar install --dev . Se hai fatto un'installazione di sistema completa, esegui hhvm /usr/local/bin/composer install --dev , anche questo funziona.

  2. Verrà creata una directory del fornitore. La phpunit "binaria" sarà localizzata presso il vendor/bin/phpunit

  3. Per eseguire PHPUnit per il tuo progetto: hhvm vendor/bin/phpunit [optional arguments]

Nota: Probabilmente in un futuro non troppo lontano hhvm /usr/local/bin/phpunit [optional arguments] functionrà come previsto, ma al momento questa è l'opzione più semplice che abbiamo

Solo una nota da aggiungere a @ cabbey's asnwer: puoi impostare il valore IncludeSearchPaths usando l'opzione -v :

 hhvm -v Server.IncludeSearchPaths.share=/usr/share/php/ $(which phpunit) MyTests.php 

Una semplice soluzione è configurare HHVM per includere le librerie PEAR nei suoi routes di ricerca.

Ho aggiunto questo alla sezione Server del mio config.hdf:

  IncludeSearchPaths { forphpunit = /usr/lib/php/ } 

e quindi ha eseguito phpunit come:

 hhvm -c ~/config.hdf /usr/bin/phpunit --bootstrap bootstrap.php MyTests.php