web-dev-qa-db-ja.com

Perlで単体テストを行うにはどうすればよいですか?

私はいくつかのOO Perlプログラミングを行っていて、疑問に思っていました:ユニットテストを実行するための最良の方法はどれですか?

これまでのところ、テストを実行するために Test :: Simple モジュールを使用してきましたが、私が望むものには不十分だと感じています。

そのためのいくつかの素敵なモジュールを私に指摘できますか?

61
mandel

ピックアップに投票を追加します Test::More Perlテストに進む前に。 PerlテストコミュニティTest Anything Protocol を中心に結束されており、 Test::More それがどのように機能するか、そして proveTest::Harness::Archiveは、テストの自動化と配布に役立ちます。

「すぐにジャンプ」したいだけなら、 Test::Class はxTest機能に [〜#〜] tap [〜#〜] バックエンドを提供します。私はそれをまったく使用していません(私は Test::More 人自身)ですが、それは 非常に高い評価 です。

48
Gaurav

Test :: Moreは、Test :: Simpleのコツをつかんだら、投資に見合う価値を提供するはずです。

また、詳細情報が必要な場合は、この前のディスカッションを参照してください: how-can-i-implement-tdd-in-Perl

18
melaos

Melaosの回答に関するコメントから判断すると、私は Test :: Class または Test :: Unit があなたが探しているものだと思います。

12
Leon Timmermans

簡単なテストの例:

#!/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 これで確認できる使用法 example