2013-04-07 4 views
6

Sto seguendo la convenzione ZF2 di memorizzare i test nei moduli e tutto funziona correttamente quando i test vengono eseguiti all'interno di ciascun modulo. Quello che mi piacerebbe fare è avere un phpunit.xml di livello root che richiama i singoli test dei moduli e li consolida per produrre dati di copertura del codice e altre metriche.Come consolidare i test dell'unità/modulo applicativo ZF2 in una singola chiamata?

Il problema è che ogni singola suite di test viene avviata all'interno dei file modulari phpunit.xml. L'unico modo in cui sono consapevole di fare le cose è configurare il bootstrap in ogni file phpunit.xml che ovviamente non viene rilevato quando si eseguono test da root come singoli file xml vengono ignorati.

Quindi la mia domanda è: esiste un modo per un file phpunit.xml di livello root per leggere i singoli file phpunit.xml e bootstrap dai moduli, una sorta di ereditarietà di configurazione phpunit se lo si desidera? Potrei andare lungo il percorso di scrittura di questo in Phing o in uno script di CI, ma mi piacerebbe farlo in modo rapido e sporco durante lo sviluppo e questa soluzione non produrrebbe ancora un report di codice consolidato.

Fondamentalmente, voglio qualcosa di simile, ma piuttosto che eseguire i test, voglio che esegua i singoli file phpunit.xml all'interno di ciascun modulo. È possibile?

<?xml version="1.0" encoding="UTF-8"?> 

<phpunit> 
    <testsuites> 
     <testsuite name="Site Tests"> 
      <directory>./module/Application/test/ApplicationTest</directory> 
      <directory>./module/User/test/UserTest</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

Aggiorna

L'obiettivo è di avere metrica del codice generati da PHPUnit che danno una panoramica del progetto, non un quadro specifico modulare. Apprezzo che gli script nelle risposte eseguiranno i test unitari su base per modulo, ma questo non è quello che sto cercando. Capisco che questa potrebbe essere una limitazione per quanto riguarda PHPUnit. Ne esaminerò nei prossimi giorni e cercherò di trovare una soluzione in quanto sembra qualcosa che potrebbe essere utile in molti progetti che si occupano di moduli personalizzati.

Update 2

Robert base si avvicinò con uno script che crea una struttura di directory con l'unità segnala all'interno e funziona benissimo, ma sarebbe bello avere in esecuzione all'interno di PHPUnit con la segnalazione delle metriche appropriate.

https://gist.github.com/robertbasic/5329789

+0

ho fatto una [domanda simile] (http://stackoverflow.com/questions/14755655/phpunit-bootstrap-in-phpstorm) qualche tempo fa, ma senza molta fortuna. Da allora non l'ho più guardato, ma quello che penso di fare è usare Phing per questo. Se il tuo IDE non lo supporta (per esempio PhpStorm), allora sarà semplice come eseguire 'phing test' o simile dalla riga di comando dopo aver effettuato un target' test'. Non è quello che stai cercando, ma è una soluzione semplice che probabilmente userò me stesso. – Andy0708

+0

Se si desidera utilizzare ant, è possibile trovare un'altra soluzione [qui] [1]. [1]: http://stackoverflow.com/questions/16628427/zend-framework-2-phpunit-multiple-modules-continuous-integration/24134625#24134625 –

risposta

1

Se si utilizza Linux è possibile creare uno script semplice. Non esattamente la soluzione che volevi, ma potrebbe aiutare non per questo meno:

#!/bin/sh 

modDir=$(pwd) 
for i in *; do 

    if [[ -d $i/test ]]; then 
     cd $i/test 
     phpunit 
     cd $modDir 
    fi 
done 

Si potrebbe semplicemente goccia che in un file nella directory runtests.sh modulo.

Solo un pensiero :)

+0

Grazie per la risposta, ma questo non aiuterà con cose come la copertura del codice in quanto genererà file separati per ogni suite di test. –

1

Avendo già discusso su IRC con varie persone sono abbastanza sicuro che non è possibile, è necessario scrivere uno script per un ciclo tra i moduli e li eseguito su un modulo base del modulo.

+0

Grazie per la risposta, ma si veda il commento sopra sul perché voglio generare copertura del codice e metriche per l'intero progetto. –

+0

Capisco cosa intendi ma non penso sia possibile, ho lo stesso problema al lavoro, generiamo la copertura del codice per ogni modulo atm –

+0

Sembra una limitazione in PHPUnit. Lo guarderò più nei dettagli nei prossimi giorni. Saluti per il feedback. –

Problemi correlati