是否需要或如何使用 Perl Devel 对不是模块的 main.pl 和 运行 编写测试

Is there a need or how to write a test on main.pl which is not module and run it using Perl Devel cover

有很多 material 讨论编写模块覆盖率,但如果我想为命令可运行的 perl 脚本编写测试怎么办 (main.pl)?

是否需要为 main.pl 编写测试,或者我只需要为模块编写测试就可以了?

假设我有这两个脚本。

命令可运行脚本

main.pl

import Halo;
&main;
sub main() {
    my $a = 2;
    my $b = 3;
    my $c = Halo.add($a, $b);
    print "a + b = $c\n";
}

============================================= =

Perl 模块

Halo.pm

package Halo;
sub add() {
    my ($class, $a, $b) = @_;
    return $a + $b;
}
1;

============================================= =

运行 在命令行中:
perl main.pl

我建议您研究“单元”和“end-to-end”测试以了解各自的好处。我建议你两者都做。使用“modulinos”可以轻松测试您的主脚本,让您可以相当轻松地融入现有的 Perl 测试生态系统。

摘自大纲:https://metacpan.org/pod/Devel::Cover#SYNOPSIS

$ perl -I. -MDevel::Cover main.pl
$ cover

您还需要稍微更改一下代码。你需要“use”而不是“import”,“Halo->add”而不是“Halo.add”。 (这些变化与 Devel::Cover 无关。)