2010-02-04 5 views
14

Cette question est en relation avec this question I asked before. J'ai plusieurs fichiers de test (A.t, B.t, C.t etc) créés pour tester leur module respectif A, B, C & ainsi de suite. Mais quand je fais un test, il fait tous les tests. Mais, quand je travaille sur un module spécifique, disons B, j'aimerais faire des tests unitaires pour ce module. Une fois mes modifications terminées, je cours toute la suite.Comment puis-je exécuter uniquement un test spécifique dans une distribution Perl?

Y a-t-il un moyen de faire comme make test B, qui exécutera uniquement les tests utilisant B.t? Et quand je dis quelque chose comme "make test all" il exécute tous les tests sous le "t" dir? Merci.

Répondre

14

Je viens de lancer le test que je veux courir:

% make; perl -Mblib t/B.t 

Vous pouvez faire la même chose avec prove, aussi.


Ce -Mblib charge le module blib qui ne fait qu'ajouter blib/lib (et divers répertoires spéciaux en dessous) à @INC pour vous. Il vient avec Perl. prove devrait faire la même chose avec le commutateur -b.

Ma commande est vraiment deux parties:. Le make (ou ./Build pour Module::Build Cette builds la source et déplace des modules Perl et d'autres fichiers dans le « construire la bibliothèque », ou blib, comme une étape intermédiaire dans l'installation complète . Normalement make test fonctionne contre les versions blib et rafraîchit pour moi. Depuis que je teste moi-même, je me assure que je rafraîchisse blib moi-même et l'inclure dans le chemin de recherche du module de Perl.

Malgré la fait que je sais tout cela, vous pourriez être surpris que j'oublie souvent de faire une de ces étapes et finissent par tester contre la mauvaise version des choses, que ce soit l'ancienne version entièrement installée (-Mblib oublié) ou les anciennes sources de développement (oublié make). Cela me conduit au débogage des déclarations telles que:

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

Merci, c'était vraiment simple. – John

2

essais exécution directement par perl œuvres. La commande prove a été conçue pour simplifier le processus, enregistrer les séquences de touches et raccourcir le cycle test-débogage-test.

prove a été conçu pour fonctionner sur plusieurs tests à la fois, ce que vous ne pouvez pas faire en appelant perl. Par exemple, vous pouvez faire:

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. 

Le prove moderne a également de nombreuses fonctionnalités pour le traitement des suites de tests et de modifier la façon dont la sortie TAP des tests est affiché.

prove --help vous montrera toutes les options de prove, et prove --man vous montrera la page de manuel.

Questions connexes