2009-10-03 23 views
8

Dopo aver accumulato abbastanza test che eseguirli tutti richiede un po 'di tempo reale, ho guardato il Test::Class::Load doc per trovare un suggerimento per l'esecuzione di singole classi di test. Fornisce un modo per farlo, ma mi manca qualcosa, perché non riesco a farlo funzionare. Ecco quello che ho:Come posso eseguire test individuali con Test :: Class :: Load?

Il mio test di directory:

drewfus:~/sandbox$ ls t/ 
lib/ perlcriticrc PerlCritic.t Unit.t 

t/Unit.t è costituito dai seguenti:

use strict; 
use warnings; 

use Test::Class; 
use Test::More 'no_plan'; 
use Test::Class::Load 't/lib'; 

Per il suggerimento nel Test::Class::Load doc, ho una classe di base per ciascuno di mia prova classi da ereditare da, SG::TestBase che vive a t/lib/SG/TestBase.pm:

package SG::TestBase; 
use strict; 
use warnings; 
use base 'Test::Class'; 

INIT { Test::Class->runtests } 

1; 

E, infine, ecco è una classe ad esempio di test, SG::UtilsTest a t/lib/SG/UtilsTest.pm:

package SG::UtilsTest; 
use strict; 
use warnings; 
use base 'SG::TestBase'; 

BEGIN { use_ok('SG::Utils') }; 
<etc> 

Tutto è ancora peachy se voglio eseguire tutte le prove con Build test o prove, ma il tentativo di eseguire un esame individuale doesn 't lavoro:

drewfus:~/sandbox$ prove -lv SG::UtilsTest 
Cannot determine source for SG::UtilsTest at /usr/share/perl/5.10/App/Prove.pm line 496 

risposta

5

Congratulazioni per avvistare l'errore nella documentazione :-)

l'ultimo argomento dovrebbe essere la pa alla classe di test - non al nome del pacchetto. Avrete anche bisogno di aggiungere il percorso per le librerie di classi di test in modo da dimostrare può trovarli fare:

prove -lv -It/lib t/lib/SG/UtilsTest.pm 

dovrebbe funzionare.

+0

Questo funziona, ma sette anni più tardi la documentazione ha ancora lo stesso errore. – jja

Problemi correlati