TAP::Parser::Aggregator - 聚合 TAP::Parser 結果
版本 3.44
use TAP::Parser::Aggregator;
my $aggregate = TAP::Parser::Aggregator->new;
$aggregate->add( 't/00-load.t', $load_parser );
$aggregate->add( 't/10-lex.t', $lex_parser );
my $summary = <<'END_SUMMARY';
Passed: %s
Failed: %s
Unexpectedly succeeded: %s
END_SUMMARY
printf $summary,
scalar $aggregate->passed,
scalar $aggregate->failed,
scalar $aggregate->todo_passed;
TAP::Parser::Aggregator
收集解析器物件,並允許報告/查詢其聚合結果。
new
my $aggregate = TAP::Parser::Aggregator->new;
傳回新的 TAP::Parser::Aggregator
物件。
add
$aggregate->add( $description => $parser );
$description
通常是測試檔名(但僅限於慣例)。它用作唯一識別碼(例如,請參閱 "parsers")。重複使用描述會導致嚴重錯誤。
$parser
是 TAP::Parser 物件。
parsers
my $count = $aggregate->parsers;
my @parsers = $aggregate->parsers;
my @parsers = $aggregate->parsers(@descriptions);
在無引數的純量內容中,此方法會傳回聚合的解析器數量。在無引數的清單內容中,會傳回按新增順序排列的解析器。
如果給定 @descriptions
,這些會對應於 add()
方法中每個呼叫所使用的鍵。在清單內容中傳回請求的解析器陣列(按請求順序排列),或在純量內容中傳回陣列參考。
請求未知識別碼會導致嚴重錯誤。
descriptions
取得按新增至聚合器的順序排列的描述陣列。
start
在將任何結果新增至聚合器之前立即呼叫 start
。它會在其他時間記錄測試執行的開始時間。
stop
在將所有測試結果新增至聚合器後立即呼叫 stop
。
elapsed
elapsed
會傳回表示聚合測試執行時間的 Benchmark 物件。為了讓 elapsed
有效,您必須在執行測試之前呼叫 start
,並在執行測試後立即呼叫 stop
。
elapsed_timestr
傳回表示 elapsed()
傳回的執行時間的格式化字串。這讓呼叫者不必擔心 Benchmark。
all_passed
如果所有測試都通過且未偵測到任何解析錯誤,則傳回 true。
get_status
取得描述聚合測試狀態的單一字詞。根據測試結果,會傳回「PASS」、「FAIL」或「NOTESTS」。CPAN::Reporter 會了解此記號。
如果在純量內容中呼叫下列各方法,每個方法都會傳回對應測試的總數。如果在清單內容中呼叫,會傳回包含對應測試的解析器描述(請參閱 add
以取得描述說明)。
failed
parse_errors
通過
計畫
略過
待辦
已通過的待辦
等待
退出
例如,找出意外成功了多少個測試(不應該通過的待辦測試通過了)
my $count = $aggregate->todo_passed;
my @descriptions = $aggregate->todo_passed;
請注意,wait
和 exit
是每個測試的等待和退出狀態的總和。這些值只會加總,以提供一個真實的值,如果其中任何一個是非零值。
total
my $tests_run = $aggregate->total;
傳回執行的測試總數。
has_problems
if ( $parser->has_problems ) {
...
}
與 has_errors
相同,但如果任何待辦測試意外成功,也會傳回 true。這更類似於「警告」。
has_errors
if ( $parser->has_errors ) {
...
}
如果任何解析器失敗,則傳回 true。這包括
失敗的測試
解析錯誤
錯誤的退出或等待狀態
todo_failed
# deprecated in favor of 'todo_passed'. This method was horribly misnamed.
這是一個命名錯誤的方法。它表示意外成功的待辦測試。現在會發出警告並呼叫 todo_passed
。