Question

Quelqu'un peut-il suggérer un bon framework de suite de tests automatisés pour Perl ?

Était-ce utile?

La solution

Cela dépend vraiment de ce que vous essayez de faire, mais voici quelques informations générales sur une grande partie de cela.

Tout d’abord, vous écririez généralement vos programmes de test avec Test::More ou Test::Simple comme programme de test principal :

use Test::More tests => 2;

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

En interne, Test::Builder est appelé pour afficher ces résultats de test sous forme de TAP (Testez n'importe quel protocole).Test::Harness (une fine enveloppe autour de TAP::Harness), lit et interprète le TAP, vous indiquant si vos tests ont réussi ou échoué.L'outil "prove" mentionné ci-dessus est fourni avec Test::Harness, disons donc que vous enregistrez ce qui précède dans le répertoire t/ (le répertoire de test Perl standard) sous le nom "numbers.t", puis vous pouvez l'exécuter avec cette commande :

prove --verbose t/numbers.t

Ou pour exécuter tous les tests dans ce répertoire (de manière récursive, en supposant que vous souhaitiez descendre dans des sous-répertoires) :

prove --verbose -r t/

(--verbose, bien sûr, est facultatif).

En remarque, n'utilisez pas TestUnit.Beaucoup de gens le recommandent, mais il a été abandonné depuis longtemps et ne s'intègre pas aux outils de test modernes.

Autres conseils

Vérifier Testeurs CPAN, qui disposent de nombreux outils pour les tests automatisés.La majeure partie devrait être sur CPAN afin que vous puissiez le modifier pour répondre à vos besoins.Il est également très simple d'écrire votre propre testeur en utilisant TAP::Harness.

Que devez-vous faire exactement et comment essayez-vous de l’intégrer dans votre processus ?

Tant que vous utilisez des tests qui produisent une sortie TAP (Test Anything Protocol), cela pourrait s'avérer utile : http://sourceforge.net/projects/smolder

Avez-vous vu couver?

"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 à l'aide du protocole Test Anything.Les détails et les tendances sont représentés graphiquement et les notifications sont fournies par e-mail ou par flux Atom. »

Si je vous comprends bien, vous recherchez TAP : Harnais

Si vous utilisez ExtUtils ::MakeMaker ou Module ::Construire, vous pouvez alors exécuter tous vos tests automatiquement en entrant la commande "make test" ou "Build test", qui exécutera tous les fichiers *.t dans le sous-dossier t/ de votre projet.

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

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

Nous devons exécuter tous les fichiers de test manuellement pour les tests

Vous souhaitez certainement utiliser proof (exécute votre test) et/ou Module :: Build (construit votre code puis exécute vos tests en utilisant le même code de faisceau de tests que celui utilisé en interne par proof.)

Vous avez dit:

"Ce que je recherche, c'est un cadre plus automatisé qui peut effectuer des tests/vérifications de build incrémentiels, etc."

Vous ne savez toujours pas vraiment ce que vous recherchez.Comme d'autres l'ont mentionné, vous souhaitez examiner des éléments basés sur Test::Harness/TAP.La grande majorité de la communauté de test Perl utilise ce framework - vous obtiendrez donc beaucoup plus de support (et de code existant utile) en l'utilisant.

Pouvez-vous nous parler un peu plus de ce que vous entendez par « tests incrémentiels/vérifications de build » ?

Je suppose que vous souhaitez diviser vos tests en groupes afin de n'exécuter que certains ensembles de tests dans certaines circonstances ?

Il y a plusieurs façons de faire ça.Le plus simple serait d'utiliser simplement le système de fichiers - divisez vos répertoires de test pour obtenir des éléments tels que :

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

Et ainsi de suite...vous pouvez ensuite utiliser l'outil "prove" en ligne de commande pour les exécuter tous, ou seulement certains répertoires, etc.

proof propose de nombreuses options utiles qui vous permettent de choisir quels tests sont exécutés et dans quel ordre (par ex.des choses comme la commande ayant échoué la plus récemment).Ceci - à lui seul - vous mènera probablement à ce dont vous avez besoin.

(BTW, il est important d'obtenir une version récente de Test::Simple/prove/etc.du CPAN.Les versions récentes ont beaucoup plus de fonctionnalités).

Si vous êtes d'esprit OO ou si vous avez une expérience antérieure des frameworks xUnit, vous voudrez peut-être jeter un œil à Test::Class qui est un framework Perl xUnit construit sur la couche TAP/Test::Harness.Je pense que c'est bien mieux que PerlUnit - mais je dirais ça depuis que je l'ai écrit :-)

Découvrez délicieux pour plus d'informations sur Test :: Class http://delicious.com/tag/Test :: Classe

Si ce n'est pas ce que vous recherchez, pourriez-vous donner un peu plus de détails sur les fonctionnalités que vous souhaitez ?

Acclamations,

Adrien

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

Le framework de suite de tests de choix est Test : Harnais, qui s'occupe du contrôle d'un test, de la collecte des résultats, etc.

Différents modules existent pour proposer certains types de tests, dont les plus courants se trouvent dans Test : Simple et Test ::Plus (les deux sont inclus dans la distribution Test-Simple).L'ensemble de 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 via

 prove t/*.t

Les distributions de modules incluent généralement une cible de création nommée « test » qui exécute la suite de tests avant l'installation.Par défaut, le processus d'installation de CPAN nécessite que les tests soient réussis après la construction avant qu'un module ne soit installé.

J'opterais pour Test::More, ou en général, tout ce qui produit ROBINET

Pour l'instant, nous utilisons Test :: More, mais le problème actuel est que nous devons exécuter manuellement tous les fichiers de test pour les tests.Ce que je recherche, c'est un cadre plus automatisé qui peut effectuer des tests/vérifications de construction incrémentiels, etc.

Un wrapper autour de Test::More pour cela serait idéal, mais quelque chose de mieux et de plus fonctionnel conviendrait également.

Je passe par PerlUnit pour voir si cela aide.

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

Pour les tests automatisés en Perl, jetez un œil à Test : Harnais, qui contient le prove outil.

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

prove -r -Ilib t

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top