2010-09-08 64 views
3

perldoc -f use
語法功能use的:如何在Perl的Test :: More中聲明後使用參數`tests`?

use Module VERSION LIST 
    use Module VERSION 
    use Module LIST 
    use Module 
    use VERSION 

但在這種情況下:

use Test::More tests => 5; 

(它設置的測試,以5號)

是什麼的數據類型expresion tests => 5
它是LIST還是別的?

聲明後如何使用此參數tests

回答

8

是的,它提到的LIST - 的=>是寫這只是一種奇特的方式:

use Test::More ("tests", 5); 

這反過來又加載模塊調用後Test::More->import("tests", 5)

+0

謝謝,我可以得到這個參數以外的模塊?我想在函數skip中使用它(跳過$ why,$ how_many) – 2010-09-08 17:57:37

+4

我不認爲你可以直接使用它,但爲什麼不只是'使用Test :: More',然後再調用'plan()'呢?這樣你可以在腳本中存儲一個變量的測試數量? – zigdon 2010-09-08 18:21:58

+3

@oraz:你可以用'$ tests = Test :: Builder-> new-> has_plan'獲取你計劃的測試數量 - 參見[Test :: Builder]的文檔(http://search.cpan .ORG /的perldoc?測試::生成器)。但是如果你想獲得這個值,所以你知道有多少跳過,你應該真的調用'skip_all'。 – Ether 2010-09-08 18:45:57

6

你可以問Test::More給你它的建造對象:

use Test::More tests => 5; 

my $plan = Test::More->builder->has_plan; 

print "I'm going to run $plan tests\n"; 

你不必做的測試文字的數量。你可以計算它並將其存儲在一個變量:

use vars qw($tests); 

BEGIN { $tests = ... some calculation ... } 
use Test::More tests => $tests; 

print "I'm going to run $tests tests\n"; 

您不必提前,雖然申報的時間計劃:

use Test::More; 

my $tests = 5; 
plan(tests => $tests); 

print "I'm going to run $tests tests\n"; 

你問跳過測試。如果你想跳過所有的測試,你可以使用skip_all代替tests

use Test::More; 

$condition = 1; 

plan($condition ? (skip_all => "Some message") : (tests => 4)); 

pass() for 1 .. 5; 

你也可以做,當你想分組測試成組。您計算出每組中的測試次數並對這些測試進行求和以創建計劃。後來你知道有多少跳過:

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; 
    } 
相關問題