【发布时间】:2017-12-24 23:38:43
【问题描述】:
我有一个带有一些实用功能的模块。
其中一个功能只是一个使用说明(用户@zdim推荐)
use 5.008_008;
use strict;
use warnings;
# Function Name: 'usage'
# Function Inputs: 'none'
# Function Returns: 'none'
# Function Description: 'Prints usage on STDERR, for when invalid options are passed'
sub usage ## no critic qw(RequireArgUnpacking)
{
require File::Basename;
my $PROG = File::Basename::basename($0);
for (@_)
{
print {*STDERR} $_;
}
print {*STDERR} "Try $PROG --help for more information.\n";
exit 1;
}
我知道该子例程按预期工作,并且测试起来很简单,但是...对于覆盖率报告,我想将它包含在我的单元测试中。
有什么方法可以使用Test::More 对其进行测试吗?
【问题讨论】:
-
也许你可以在
eval块中运行它? -
@DavidKnipe - 不,
eval只捕获die,而不是exit。如果你想自己测试一下,perl -E 'eval { exit } ; say "caught"'不会产生任何输出。 -
感谢您的信任(我假设这个想法)。注释:代码将打印
@_元素,它们之间没有任何内容。我想这不是意图,所以也许print {*STDERR} "@_\n" if @_;。引号下的数组被插值,其中$,variable 的值(默认为空格)被添加到元素之间。 -
好点!再次感谢@zdim!
标签: perl unit-testing perl-module