2010-02-04 15 views
14

Questa domanda è relativa a this question I asked before. Ho più file di test (A.t, B.t, C.t etc) creati per testare i rispettivi moduli A, B, C & così via. Ma quando faccio un make test, esegue tutti i test. Ma, quando sto lavorando su un modulo specifico, dico B, mi piacerebbe eseguire i test unitari per quel modulo. Dopo aver finito con le mie modifiche, eseguirò l'intera suite.Come posso eseguire solo un test specifico in una distribuzione Perl?

Quindi c'è un modo per fare come make test B, che eseguirà solo i test utilizzando B.t? E quando dico qualcosa come "make test all" esegue tutti i test sotto la "t" dir? Grazie.

risposta

14

ho solo eseguire il test che voglio correre:

% make; perl -Mblib t/B.t 

Si può fare la stessa cosa con prove, anche.


Che -Mblib carica il modulo blib che si limitano aggiunge blib/lib (e varie directory speciali sotto di essa) a @INC per voi. Viene fornito con Perl. prove dovrebbe fare la stessa cosa con lo switch -b.

è il mio comandamento davvero due parti:. Il make (o ./Build per Module::Build Questo costruisce la fonte e muove moduli Perl e altri file nel "costruire libreria", o blib, come passo intermedio nella installazione completa . Normalmente make test opere contro le versioni in blib e rinfresca che per me. Dal momento che sto testando per conto mio, mi assicuro che rinfresco blib me stesso e includerlo nel percorso di ricerca del modulo di Perl.

Nonostante la In effetti, se so tutto questo, potresti essere sorpreso che mi dimentichi spesso di farlo uno di questi passaggi e termina i test sulla versione errata delle cose, sia la versione precedente completamente installata (dimenticata -Mblib) o le vecchie fonti di sviluppo (dimenticato make). Questo mi porta a debug affermazioni come:

print "No really, this is the Foo version. kthnxbye\n"; 
+0

Grazie, è stato davvero semplice. – John

2

L'esecuzione di test direttamente attraverso perl opere. Il comando prove è stato progettato per semplificare il processo, salvare le sequenze di tasti e abbreviare il ciclo test-debug-test.

prove è stato progettato per funzionare su più test contemporaneamente, che non è possibile richiamare tramite perl. Per esempio, si può fare:

prove t/*.t 
prove t/  # Same as t/*.t 
prove t/dev/ # Run only tests in t/dev/ 
prove -r t/ # Runs all .t files in t/ and any directories below. 

Il moderno prove ha anche molte caratteristiche per la gestione di suite di test e modificare la modalità di visualizzazione l'uscita TAP dai test.

prove --help mostrerà tutte le opzioni prove e prove --man mostrerà la pagina di manuale.

Problemi correlati