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
通过
计划
跳过
待办
待办通过
等待
退出
例如,要找出有多少测试意外成功(不应该通过的 TODO 测试)
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
相同,但如果任何 TODO 测试意外成功,也会返回 true。这更类似于“警告”。
has_errors
if ( $parser->has_errors ) {
...
}
如果任何解析器失败,则返回 true。这包括
测试失败
解析错误
错误的退出或等待状态
todo_failed
# deprecated in favor of 'todo_passed'. This method was horribly misnamed.
这是一个命名错误的方法。它指示哪些 TODO 测试意外成功。现在将发出警告并调用 todo_passed
。