在开发过程中测试perl模块的正确方法是什么?

Ala*_*ith 4 testing perl module

我正在开发一个个人Perl模块来构建一个基本的脚本框架,并帮助我学习更多有关该语言的知识.我通过命令行工具使用ExtUtils :: ModuleMaker创建了一个名为"AWSTools :: Framework"的新模块modulemaker.我正试图找出在开发过程中测试它的适当方法.

创建的目录结构包括以下内容:

./AWSTOOLS/Framework/lib/AWSTools/Framework.pm
./AWSTOOLS/Framework/t/001_load.t

自动生成的001_load.t文件如下所示:

# -*- perl -*-

# t/001_load.t - check module loading and create testing directory

use Test::More tests => 2;

BEGIN { use_ok( 'AWSTools::Framework' ); }

my $object = AWSTools::Framework->new ();
isa_ok ($object, 'AWSTools::Framework');
Run Code Online (Sandbox Code Playgroud)

如果我尝试直接运行脚本(从命令行或在我的TextMate编辑器中),它将失败:

Can't locate AWSTools/Framework.pm in @INC....

如果我尝试prove./AWSTOOLS/Framework目录中运行,它也会失败.

问题是:在开发Perl模块时运行测试的正确方法什么?

bri*_*foy 5

如果要运行单个测试文件,则需要告诉perl您在哪里找到模块,就像对待任何其他程序一样.我使用blib自动添加正确的路径:

 $ perl Makefile.PL; make; perl -Mblib t/some_test.t
Run Code Online (Sandbox Code Playgroud)

你也可以prove用来做同样的事情.我不使用prove,但你可以阅读它的文档来弄清楚.该-b开关应该这样做,但我已经与它没有做正确的事(可能只是我自己的白痴)的问题.