从perldoc -f use
函数的语法use:
use Module VERSION LIST
use Module VERSION
use Module LIST
use Module
use VERSION
Run Code Online (Sandbox Code Playgroud)
但在这种情况下:
use Test::More tests => 5;
Run Code Online (Sandbox Code Playgroud)
(它将测试次数设置为5)
表达的数据类型是tests => 5什么?
是LIST还是其他什么?
tests声明后如何使用此参数?
是的,这是上面LIST提到的 - 这=>只是写这个的一种奇特的方式:
use Test::More ("tests", 5);
Run Code Online (Sandbox Code Playgroud)
Test::More->import("tests", 5)在加载模块后依次调用.
您可以要求Test :: More为您提供构建器对象:
use Test::More tests => 5;
my $plan = Test::More->builder->has_plan;
print "I'm going to run $plan tests\n";
Run Code Online (Sandbox Code Playgroud)
您不必将测试数量设为文字.您可以计算它并将其存储在变量中:
use vars qw($tests);
BEGIN { $tests = ... some calculation ... }
use Test::More tests => $tests;
print "I'm going to run $tests tests\n";
Run Code Online (Sandbox Code Playgroud)
您不必提前宣布计划:
use Test::More;
my $tests = 5;
plan( tests => $tests );
print "I'm going to run $tests tests\n";
Run Code Online (Sandbox Code Playgroud)
你问过跳过测试.如果要跳过所有测试,可以使用skip_all而不是tests:
use Test::More;
$condition = 1;
plan( $condition ? ( skip_all => "Some message" ) : ( tests => 4 ) );
pass() for 1 .. 5;
Run Code Online (Sandbox Code Playgroud)
如果要将测试分组,也可以执行此操作.您计算出每个组中的测试数量,并总结这些测试以创建计划.后来你知道要跳过多少:
use Test::More;
my( $passes, $fails ) = ( 3, 5 );
my( $skip_passes, $skip_fails ) = ( 0, 1 );
plan( tests => $passes + $fails );
SKIP: {
skip "Skipping passes", $passes if $skip_passes;
pass() for 1 .. $passes;
}
SKIP: {
skip "Skipping fails", $fails if $skip_fails;
fail() for 1 .. $fails;
}
Run Code Online (Sandbox Code Playgroud)