当我使用Test :: Harness :: runtests运行它时,为什么我的Perl模块测试会失败?

Fre*_*rik 1 testing perl unit-testing

我有一个Test :: More测试脚本,用于我们制作的模块.单独运行测试脚本时,它的工作方式与预期一致.由于我们需要运行多个测试,因此我制作了一个运行所有脚本的Test :: Harness文件.但是,从Test :: Harness 执行时runtests,脚本会返回错误.

在调试过程中,我尝试使用backtics来运行脚本,这很有效.因此runtest命令导致错误.

线束的代码非常简单:

(perl) -w
use strict;
use warnings;
use Test::Harness;

my @tests = ('test1.pl', 'test2.pl', 'test3.pl');
runtests(@tests);
Run Code Online (Sandbox Code Playgroud)

错误源自我们使用的cpan模块Pod :: HtmlEasy.

我希望的解决方案是运行Test :: Harness而不会出错.

测试的输出:

test1..........False [] range "\w-" in regex; marked by  line 20.
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 422,  line 20.
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 363,  line 22.
False [] range "\w-" in regex; marked by  line 22.
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 488,  line 24.
Use of uninitialized value in string ne at /app/perl/lib/Pod/HtmlEasy/Parser.pm line 363,  line 26.
close() on unopened filehandle PODIN at /app/perl/lib/Pod/HtmlEasy.pm line 248.
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 318.
(...)
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 396.
test1..........ok 2/3close() on unopened filehandle PODIN at /app/perl/lib/Pod/HtmlEasy.pm line 248.
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 318.
(...)
Use of uninitialized value in concatenation (.) or string at /app/perl/lib/Pod/HtmlEasy.pm line 396.
test1..........ok                                                      

Eth*_*her 5

为什么不让Test :: Harness从命令行动态构建测试环境?

prove test*.pl
Run Code Online (Sandbox Code Playgroud)

或者,如果您将测试保留在t/目录中作为标准:

prove -r t/
Run Code Online (Sandbox Code Playgroud)