2008-09-08 17 views

Répondre

23

Cela dépend vraiment de ce que vous essayez de faire, mais voici un peu de contexte pour une grande partie de cela.

D'abord, vous généralement écrire vos programmes de test avec Test :: Plus ou Test :: Simple comme le programme de test de base:

use Test::More tests => 2; 

is 3, 3, 'basic equality should work'; 
ok !0, '... and zero should be false'; 

interne, Test :: Builder est appelé à la sortie les résultats des tests comme TAP (Test Anything Protocol). Test :: Harness (un wrapper fin autour de TAP :: Harness), lit et interprète le TAP, vous indiquant si vos tests ont réussi ou échoué. L'outil "prouver" mentionné ci-dessus est fourni avec Test :: Harness, alors disons que vous devez sauvegarder les éléments ci-dessus dans le répertoire t/(le répertoire de test Perl standard) en tant que "numéros".t », alors vous pouvez l'exécuter avec cette commande:

prove --verbose t/numbers.t 

Ou pour exécuter tous les tests dans ce répertoire (récursive, vous supposant que vous voulez descendre dans les sous-répertoires):

prove --verbose -r t/ 

(--verbose , bien sûr, est en option).

Comme une note de côté, ne pas utiliser TestUnit. Beaucoup de gens recommandent, mais il a été abandonné il y a longtemps et ne s'intègrent pas avec des outils de test modernes.

0

Je vais pour le test :: Plus, ou en général, tout ce qui sort TAP

0

A partir de maintenant, nous utilisons numéro de test :: Plus mais en cours est que nous devons exécuter tous les fichiers de test manuellement pour tester. Ce que je cherche est un cadre plus automatisé qui peut faire des tests incrémentiels/construire des contrôles etc.

Un emballage autour de Test :: More pour cela serait idéal, mais quoi de mieux et de plus fonctionnel serait bien aussi.

Je passe par PerlUnit pour voir si cela aide.

+1

S'il vous plaît ne pas utiliser PerlUnit. Il a été abandonné. Si vous devez disposer d'une structure de style xUnit, voir Test::Class. Il est activement maintenu et s'intègre avec le framework de test standard de Perl. – Ovid

2

Si Si vous utilisez ExtUtils::MakeMaker ou Module::Build, vous pouvez exécuter automatiquement tous vos tests en entrant la commande « make test » ou « Build test », je vous comprends bien que vous cherchez TAP::Harness

2

qui exécutera tous les fichiers * .t dans le t/sous-dossier de votre projet.

Si vous n'utilisez pas l'un de ces éléments, vous pouvez utiliser TAP::Harness pour automatiser l'exécution de plusieurs scripts de test.

Pour réellement écrire les tests, utilisez Test::More ou l'un des modules que d'autres ont suggéré ici.

0

Connaissez-vous l'utilitaire 'proof' (de App :: Prove)? Vous pouvez lui dire d'exécuter récursivement tous les tests dans un répertoire donné, avec ou sans verbosité, etc.

1

Personnellement, j'aime Test :: Most, c'est fondamentalement Test :: More avec quelques fonctionnalités intéressantes.

9

Découvrez CPAN Testers, qui ont beaucoup d'outils pour les tests automatisés. La plupart de ces informations devraient figurer sur le CPAN, vous pourrez donc le modifier pour répondre à vos besoins. Il est également très facile d'écrire son propre testeur en utilisant TAP :: Harness.

Que devez-vous faire exactement et comment voulez-vous l'intégrer dans votre processus?

2

nous devons exécuter tous les fichiers de test manuellement pour tester

Vous voulez certainement être à l'aide de prouver (exécute votre test) et/ou du module :: build (construit votre code, puis exécute vos tests en utilisant le le même code de faisceau de test qui prouve utilise en interne.)

0

Pour les tests automatisés en Perl jetez un oeil à Test::Harness, qui contient l'outil prove.

L'outil prove peut être exécuté avec la commande suivante:

prove -r -Ilib t 

Cela récursivement test de tous les fichiers * .t dans le répertoire « t/», tout en ajoutant lib au chemin d'inclusion.

+0

-l est un raccourci pour -Ilib – Schwern

1

Le cadre de suite de tests de choix est Test::Harness, qui prend en charge le contrôle d'un essai, la collecte des résultats, etc.

modules différents existent pour fournir certains types de tests, dont les plus courants peuvent être trouvés dans Test::Simple et Test::More (les deux sont inclus dans la distribution Test-Simple). Tout l'espace de noms Test sur le CPAN est dédié aux modules de tests unitaires spécialisés, dont la majorité sont conçus pour être exécutés sous Test :: Harness. Par convention, les tests sont stockés dans le répertoire t/d'un projet, et chaque fichier de test utilise l'extension de fichier .t; les tests sont généralement exécutés par

prove t/*.t 

distributions du module comprennent généralement une cible de marque nommée 'test' qui exécute la suite de tests avant l'installation. Par défaut, le processus d'installation CPAN nécessite que les tests passent après la génération avant l'installation d'un module.

5

Avez-vous vu smolder? "Smoke Test Aggregator utilisé par les développeurs et les testeurs pour télécharger (automatisé ou manuellement) et afficher les tests de fumée/régression en utilisant le protocole Test Anything.Les détails et les tendances sont représentés et les notifications fournies par e-mail ou flux Atom."

+0

C'est sympa, mais Smolder ne semble plus analyser correctement les archives TAP. –

2

Vous avez dit:

« Ce que je cherche est un plus d'un cadre automatisé qui peut faire des tests supplémentaires/build contrôles etc »

toujours pas tout à fait sûr de ce que vous êtes après .Comme d'autres l'ont mentionné, vous voulez regarder des choses qui sont basées sur Test :: Harness/TAP. La grande majorité de la communauté de test Perl utilise ce framework - ainsi vous obtiendrez beaucoup plus de support (et de code existant utile) en l'utilisant.

Pouvez-vous parler un peu plus sur ce que vous entendez par « tests supplémentaires/construire des contrôles »?

Je devine que vous voulez diviser vos tests en groupes afin que vous ne diffusez certains ensembles de tests dans certaines circonstances?

Il y a deux façons de le faire. Le plus simple serait de simplement utiliser le système de fichiers - diviser vos répertoires de test afin que vous avez des choses comme:

 

core/ 
database.t 
infrastructure.t 
style/ 
    percritic.t 
ui/ 
    something.t 
    something-else.t 

Et ainsi de suite ... vous pouvez alors utiliser la ligne de commande outil « prouver » pour les exécuter tous , ou seulement certains répertoires, etc.

la preuve qu'elle a beaucoup d'options utiles qui vous permettent de choisir les tests exécutés et dans quel ordre (par exemple, des choses comme l'ordre le plus récemment échoué). Ceci - tout seul - vous amènera probablement vers ce dont vous avez besoin.

(BTW il est important d'obtenir une version récente de Test :: Simple/prouver/etc. CPAN. Les versions récentes ont beaucoup, beaucoup plus de fonctionnalités). Si vous êtes d'un état d'esprit OO ou avez une expérience antérieure des frameworks xUnit, vous pouvez jeter un oeil à Test :: Class qui est un framework Perl xUnit qui est construit au-dessus du TAP/Test: : Couche de harnais. Je pense qu'il est tout à fait beaucoup mieux que PerlUnit - mais je dirais que depuis je l'ai écrit :-)

Découvrez délicieux pour un peu plus d'informations sur le test :: Class http://delicious.com/tag/Test::Class

Si ce n'est pas ce que vous Est-ce après - pourriez-vous entrer dans un peu plus de détails sur la fonctionnalité que vous voulez?

Cheers,

Adrian