我正在通过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
我无法弄清楚如何从对象中获取测试结果。
答案 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数据。但是,我无法弄清楚这一点。