2013-06-14 10 views
6

sto usando PhpStorm che è configurato per utilizzare xDebug (posso mettere a punto tramite il browser web più che bene)Cercando di test di unità di debug phpunit su cli utilizzando xdebug fallisce

corro il debugger in PhpStorm che ha l'idekey di 11854 e sto cercando di eseguire il debug di un test di unità, e ho impostare i punti di interruzione correttamente

così ho eseguito questo comando attraverso la CLI:

phpunit -d xdebug.profiler_enable=on -d xdebug.idekey=11854 --filter testFunction s_function/sFunctionTest.php 

Tuttavia, non sarebbe il debug al punto di interruzione di conseguenza ...

quando ho provato l'esecuzione di questo nello script di test:

error_log(ini_get('xdebug.profiler_enable')); 
error_log(ini_get('xdebug.idekey')); 

si rivelerebbe che xdebug.profiler_enable è 0 e xdebug.idekey è solo il mio nome utente.

cosa ho fatto di sbagliato e come posso ottenere xdebug a lavorare phpunit attraverso il cli

+0

Se è possibile eseguire il debug dei normali script in ** modalità CLI ** in PhpStorm ..poi fai lo stesso, ma con PHPUnit: crea Run/Debug Configuration di PHPUnit type, riempi tutti i campi richiesti in modo da poterlo eseguire in PHPUnit .. e invece di "Esegui" usa il pulsante "Debug". – LazyOne

risposta

7

state per impostare argomenti per PHPUnit, non PHP. Il seguente dovrebbe fare quello che vuoi:

php -d xdebug.profiler_enable=on -d xdebug.idekey=11854 `which phpunit` --filter testFunction s_function/sFunctionTest.php 
+0

Puoi mostrare uno screenshot su cosa è l'output atteso dopo aver eseguito questo comando? – Jhn

+0

dovresti spiegare cosa e perché i parametri stai usando? –

2

Il xdebug docs dare una soluzione che sembra più semplice ...

export XDEBUG_CONFIG="idekey=session_name" 
php myscript.php 

Una volta che la variabile è impostata, è possibile eseguire i vostri script dalla riga di comando come normale (per quella sessione SSH) e PHP utilizzerà questa configurazione.

Anche di nota:

È anche possibile configurare la xdebug.remote_host, xdebug.remote_port, xdebug.remote_mode e xdebug.remote_handler in questa stessa variabile d'ambiente fino a quando si separare i valori da un spazio

0

In Ubuntu per eseguire il debug CLI ho trovato l'unico modo per farlo lavoro era di aggiungere quanto segue al file ~/.bashrc

export PHP_IDE_CONFIG='serverName=localhost' 
export XDEBUG_CONFIG='idekey=PHPSTORM' 

Sostituisci idekey = ?? per 11854 nel tuo esempio. Assicurarsi di avviare una nuova sessione della console in modo che vengano utilizzati i vars.

0

Sto provando qui una configurazione molto diversa. Eseguo le mie applicazioni all'interno di finestre mobili e ho un contenitore molto simile ai contenitori in produzione. Quindi, per eseguire php con xdebug nel mio ambiente di sviluppo, ho dovuto impostare un alias con parametri xdebug e la variabile PHPStorm.

$ alias php=`which php`' \ 
    -d xdebug.idekey=xdbg \ 
    -d xdebug.remote_enable=1 \ 
    -d xdebug.remote_connect_back=1 \ 
    -d xdebug.remote_autostart=1 \ 
    -d xdebug.remote_port=9000 \ 
    -d xdebug.remote_host=172.17.0.1 \ 
    -d xdebug.remote_handler=dbgp' 

$ export PHP_IDE_CONFIG="serverName=localapp.docker" 

Dopo questo non bella trucco, ho potuto mettere punti di interruzione su PhpStorm ed eseguire phpunit da linea di comando.

$ php ../../bin/phpunit --verbose 

Tutti i comandi precedenti sono stati eseguiti all'interno del contenitore. Il localapp.docker è l'indirizzo del mio contenitore ed è codificato in codice /etc/hosts di host.