【发布时间】:2012-01-09 01:26:17
【问题描述】:
我正在开发一个个人 Perl 模块来构建一个基本的脚本框架并帮助我更多地了解该语言。我通过命令行工具modulemaker 使用ExtUtils::ModuleMaker 创建了一个名为“AWSTools::Framework”的新模块。我正在尝试找出在开发过程中对其进行测试的适当方法。
创建的目录结构包括以下内容:
./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');
如果我尝试直接运行脚本(从命令行或在我的 TextMate 编辑器中),它会失败并显示:
在 @INC 中找不到 AWSTools/Framework.pm....如果我尝试在./AWSTOOLS/Framework 目录中运行prove,它也会失败。
问题是:在开发 Perl 模块时运行测试的正确方法是什么?
【问题讨论】:
-
如果您打算将其上传到CPAN,我建议您查看Dist::Zilla。
-
我不打算将这个发送到 CPAN。我正在做更多的事情来了解该语言,同时为自己构建一个开箱即用的基本帮助脚本。也就是说,我仍然会深入研究 Dist::Zilla,假设至少其中一些仍然适用,不管这个模块只是为我准备的。
-
进一步的研究还发现了“How can I run Perl test suite automatically when files change?”和对Test::Continuous的引用。它在每次文件更改时运行您的测试。与我最初询问的不同,但我发现它在使用
autoprove -l运行时非常有用。 (我还不知道如何让autoprove -b工作。)