我正在为我们的部分代码库使用基于Test::More的单元测试,该代码库按顺序加载我们所有的内部模块use_ok()
。我想让警告对单元测试来说是致命的,这样我们就可以更容易地捕捉到回归。
这里建议我使用Test::NoWarnings,实际上这似乎是我正在寻找的。
脚本在这里:
#!/usr/bin/perl -w
use File::Find;
use File::Spec;
use Test::More;
use Test::NoWarnings;
# Determine the filepaths of every .pm file in the lib directory
my @files;
File::Find::find(
sub
{
if (/\.pm$/)
{
push(@files, $File::Find::name);
}
},
"$ENV{'CODE_ROOT'}/lib"
);
done_testing(scalar(@files) + 1);
use lib "$ENV{'CODE_ROOT'}/lib";
foreach my $file (@files)
{
# <code removed for brevity: format file name into Module::Hierarchy::For::Use>
use_ok($includeString);
}
1;
我遇到过一些EXPORT()
不同模块编辑的子例程引发重新定义警告的情况,但这些警告没有被Test::NoWarnings
模块捕获。相反,由于小写属性声明引起的警告被正确捕获。
需要明确的是,我已经阅读了有关使用EXPORT()
vsEXPORT_OK()
的警告,并且正在处理警告的来源。我特别想知道我对 的行为的假设是否Test::NoWarnings
正确,如果是,我如何更改单元测试以便捕获此类事情。