是否需要或如何使用 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 无关。)
有很多 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 无关。)