2009-10-03 5 views
8

Après avoir accumulé suffisamment de tests pour les exécuter, tout prend un peu de temps réel, j'ai regardé le Test::Class::Load doc pour trouver une astuce pour exécuter des classes de test individuelles. C'est un moyen de le faire, mais il me manque quelque chose, car je n'arrive pas à le faire fonctionner. Voici ce que j'ai:Comment puis-je exécuter des tests individuels avec Test :: Class :: Load?

Mon répertoire test:

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

t/Unit.t se compose des éléments suivants:

use strict; 
use warnings; 

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

par la suggestion dans le Test::Class::Load doc, j'ai une classe de base pour chacun de mon test classes à hériter de, SG::TestBase qui vit à t/lib/SG/TestBase.pm:

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

INIT { Test::Class->runtests } 

1; 

Et enfin, voici une classe de test exemple, SG::UtilsTest à t/lib/SG/UtilsTest.pm:

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

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

Tout est encore Peachy si je veux exécuter tous les tests avec Build test ou prove, mais en essayant d'exécuter un test individuel doesn « t travail:

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

Répondre

5

Félicitations pour repérer l'erreur dans la documentation :-)

le dernier argument devrait être le pa th à la classe de test - pas le nom du paquet. Vous aurez également besoin d'ajouter le chemin vers les bibliothèques de classes de test afin prouvez peut les retrouver à faire:

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

devrait fonctionner.

+0

Cela fonctionne, mais sept ans plus tard, la documentation présente toujours la même erreur. – jja

Questions connexes