如何在Perl中进行单元测试?

How can I do unit testing in Perl?

我一直在做一些OO Perl编程,我想知道:哪种是执行单元测试的最佳方法?

到目前为止,我一直在使用Test :: Simple模块执行测试,但是它感觉不足以满足我的需求。

您能为此指出一些不错的模块吗?


在进行进一步的Perl测试之前,我将投票赞成Test::More。 Perl测试社区在Test Anything Protocol周围非常团结,您将需要使用Test::More来了解它的工作原理以及proveTest::Harness::Archive之类的工具如何帮助自动化和分发测试。 pb>

如果您只想"直接跳入",我认为Test::Class为xTest工具提供了TAP后端。我根本没有使用过它(我本人是Test::More人),但是它的使用率很高。


Test :: More应该为您带来更多的实惠,一旦您掌握了Test :: Simple即可。


从您对melaos答案的评论来看,我想说的是Test :: Class或Test :: Unit。


简单测试示例:

1
2
3
4
5
6
7
8
9
10
11
#!/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');

在此示例中可以看到

Test :: Class用法。