-1

我正在通过 TAP::Harness 运行一些测试,现在我正试图从 TAP 解析器中获取所有单独的结果。我要做的是首先运行测试:

my $harness = TAP::Harness->new( { verbosity => 1, lib => [ 'blib/lib' ] } );
my $aggregator = $harness->runtests( @tests );

这很好用。然后我尝试按照 TAP::Parser 文档获取结果:

my @results;

my @parsers = $aggregator->parsers;
foreach my $prsr( @parsers ) { 
    while( my $result = $prsr->next ) { 
        push @results, { type => $result->type,
                         ok   => $result->ok,
                         text => $result->as_string };
    }
}

但是,这会导致@results为空数组。

如果我Dumper是单个 Parser 对象,我可以看到它们已经成功解析了测试结果:

  bless( {
           'tests_run' => 5,
           'actual_passed' => [
                                1,
                                2,
                                3,
                                4,
                                5
                              ],
  ....etc

我不知道如何从对象中获取测试结果。

4

1 回答 1

0

好吧,我能够通过手动构建单个解析器并运行它们来获得我想要的东西。

    foreach my $test( @tests ) { 
        my @test_results;
        my $parser = TAP::Parser->new( { source => $test } );
        while( my $result = $parser->next ) { 
            push @test_results, 
              { text => $result->as_string,
                ...
              }
        }

然后我想我可以手动进行聚合,尽管我仍然希望有一种方法可以从单个 TAP::Harness 实例中获取聚合结果和实际的 TAP 数据。不过,我一直无法弄清楚。

于 2013-01-21T04:31:03.333 回答