从TAP :: Harness获取聚合TAP输出的单独结果

时间:2013-01-21 00:58:58

标签: perl testing tap tap-harness

我正在通过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

我无法弄清楚如何从对象中获取测试结果。

1 个答案:

答案 0 :(得分: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数据。但是,我无法弄清楚这一点。

相关问题