2009-10-03 9 views
8

Po zgromadzeniu wystarczającej liczby testów, które wymagają trochę czasu, przyjrzałem się Test::Class::Load doc, aby znaleźć wskazówkę do uruchamiania poszczególnych klas testowych. Zapewnia to sposób, ale muszę czegoś pomijać, ponieważ nie mogę tego zrobić. Oto co mam:Jak uruchomić pojedyncze testy za pomocą Test :: Class :: Load?

Mój katalog Test:

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

t/Unit.t składa się z następujących elementów:

use strict; 
use warnings; 

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

Per sugestią w Test::Class::Load doc, mam klasę bazową dla każdego z mojego testu klasy do odziedziczenia po, SG::TestBase, która mieszka w t/lib/SG/TestBase.pm:

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

INIT { Test::Class->runtests } 

1; 

I wreszcie, tutaj jest klasa przykład testy, SG::UtilsTest na t/lib/SG/UtilsTest.pm:

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

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

Wszystko jest nadal aksamitny jeśli chcę uruchomić wszystkie testy z Build test lub prove, ale stara się wykonać jeden test nie robi „t praca:

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

Odpowiedz

5

Gratulujemy plamienia błąd w dokumentacji :-)

ostatni argument powinien być pa th do klasy testowej - nie nazwa pakietu. Musisz również dodać ścieżkę do bibliotek klas testowych, aby je znaleźć. Wykonanie:

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

powinno działać.

+0

To działa, ale siedem lat później dokumentacja nadal ma ten sam błąd. – jja

Powiązane problemy