2009-09-12 18 views
6

Ho una classe di test PHPUnit che mi piacerebbe essere ignorata da una sessione di test. So che posso farlo rinominandolo in modo che non contenga la parola Test nel suo nome file, ma preferirei non farlo poiché confonde le acque di controllo del codice sorgente più di quanto mi piacerebbe.Fare in modo che PHPUnit ignori le cose?

Qualcuno ha un suggerimento?

risposta

15

ci sono un paio di opzioni per il comando phpunit che può aiutare a definire quali test dovrebbe e non dovrebbe essere eseguito:

$ phpunit --help 
PHPUnit 3.4.0beta5 by Sebastian Bergmann. 

Usage: phpunit [switches] UnitTest [UnitTest.php] 
     phpunit [switches] <directory> 
... 
    --filter <pattern>  Filter which tests to run. 
    --group ...    Only runs tests from the specified group(s). 
    --exclude-group ...  Exclude tests from the specified group(s). 
    --list-groups   List available test groups. 
... 

Quelli non sarà probabilmente permetterà di specificare esattamente quello che volevi ... Ma potrebbero aiutare.

Per maggiori dettagli, si veda The Command-Line Test Runner


Soprattutto, ho un po 'come la funzione di gruppo: basta usare un tag @group nel phpdoc dei vostri test, di ri-raggrupparli (per esempio, un gruppo per "pezzo di funzionalità"); e, successivamente, è possibile utilizzare le opzioni --group o --exclude-group sulla riga di comando per specificare quali test devono o non devono essere eseguiti.

Nel tuo caso, se non è possibile modificare i test, forse l'opzione --Filter può aiutare, a seconda di come i test sono nammed (vale a dire, se c'è un modo per identificare quelli che si desidera eseguire):

--filter
funziona solo test il cui nome corrisponde al modello dato. Il modello può essere o il nome di un singolo test o un'espressione regolare che corrisponde a nomi di test multipli.


Un'altra soluzione, se non si cambiano sempre i "gruppi" di test da eseguire, potrebbe essere quella di utilizzare un test-suite che include solo i test che si desidera eseguire.

Ad esempio, dare un'occhiata a Composing a Test Suite Using XML Configuration.

+0

L'annotazione di gruppo andrà bene. Grazie. –

+0

Prego :-) Buon divertimento! –

+0

Ho impostato '@group slow' su tutti i miei test lenti e ho usato un file' phpunit.xml' per escluderli di default. Se voglio includerli di nuovo, eseguo semplicemente 'phpunit --no-configuration --group slow'. – dave1010

1

Ho cercato l'intero manuale PHPUnit e non ho trovato nulla. Puoi ignorare il codice ai fini della copertura del test, ma questo è tutto. Tuttavia, questo ChangeLog (in una forchetta apparente) menziona che "Ignora i nomi dei file di test con prefisso ." Non l'ho provato, ma ne vale la pena. Oppure puoi commentare il test. Presumo che ti piacerebbe qualcosa come offerte NUnit dove riporterà i test ignorati; Non ho trovato nulla di simile.

+0

Grazie per la ricerca, l'avevo già fatto ma rinominare il file non è qualcosa che sono incline a fare. –

+0

* con prefisso. * Qual è il prefisso? Un punto? –

+0

Sì, '.'. Revisionando anche il link non funzionante. – TrueWill

4

Mi rendo conto che questa è una vecchia domanda con una risposta accettata, quindi spero di non intromettermi, ma volevo solo sottolineare per il completamento che è possibile skip tests. I test incompleti e saltati non vengono eseguiti da PHPUnit.

Ovviamente, questo è a livello di test, tuttavia è possibile consolidarlo inserendolo nella classe 'setUp().

Solo un heads-up.

+0

Idea pulita. Lo terrò a mente. –

+0

Si noti che i dispositivi sono ancora inseriti per i test saltati che potrebbero essere una delle parti più lente dei test di corsa –

6

semplicemente rinominare il metodo:

testFunctionality() {// bla }

a

ignore_ testFunctionality() {// bla }

1

Preferisco usare nomi normali per le mie funzioni e messo in funzione docBloc

/** 
* @test 
*/ 
public function getDetails() 
{} 

Così, quando io non voglio questo test per essere eseguito, ho appena tolga la @test. Inoltre, forse qui troverai qualcosa di utile PHPUnit - The XML Configuration File Ho aggiunto nei test di tag "exclude" che non volevo essere coperto da phpunit.

Problemi correlati