web-dev-qa-db-fra.com

Comment faire des tests unitaires en Perl?

J'ai fait de la programmation OO Perl et je me demandais: quelle est la meilleure façon d'effectuer des tests unitaires?

Jusqu'à présent, j'ai utilisé le module Test :: Simple pour effectuer des tests, mais cela semble insuffisant pour ce que je veux.

Pouvez-vous m'indiquer quelques modules Nice pour cela?

61
mandel

J'ajouterais mon vote pour ramasser Test::More avant d'aller plus loin dans les tests Perl. La communauté de test Perl est assez bien unie autour du Test Anything Protocol , et vous voudrez jouer avec Test::More pour comprendre comment cela fonctionne et comment des outils comme prove et Test::Harness::Archive peut aider à automatiser et à distribuer les tests.

Si vous voulez juste "sauter directement", je pense que Test::Class fournit des fonctionnalités xTest avec un backend TAP . Je ne l'ai pas utilisé du tout (je suis Test::More personne moi-même), mais c'est très bien noté .

48
Gaurav

Test :: More devrait vous offrir plus pour votre argent une fois que vous aurez compris Test :: Simple.

Vous pouvez également vous référer à cette discussion précédente si vous voulez plus d'informations: comment-je-implémenter-tdd-en-Perl

18
melaos

À en juger par vos commentaires sur la réponse de melaos, je dirais que Test :: Class ou Test :: Unit est ce que vous recherchez.

12
Leon Timmermans

Exemple de test simple:

#!/usr/bin/Perl -w

use strict;
use warnings 'all';
use Test::More plan => 4;  # or use Test::More 'no_plan';

use_ok('My::Module', 'Loaded My::Module');
ok( my $obj = My::Module->new(), 'Can create instance of My::Module');

ok( $obj->value('hello'), 'Set value to hello' );
is( $obj->value => 'hello', 'value is still hello');
11
JDrago

Test :: Class utilisation que vous pouvez voir dans ce exemple .

3