内容

名称

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)。

例如,要找出有多少测试意外成功(不应该通过的 TODO 测试)

my $count        = $aggregate->todo_passed;
my @descriptions = $aggregate->todo_passed;

请注意,waitexit 是每个测试的等待和退出状态的总和。这些值仅在其中任何一个非零时才进行汇总,以提供一个真实值。

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

另请参阅

TAP::Parser

TAP::Harness