虽然我可以努力使剩下的测试是“平行的”,我期望总是有一些测试不是.什么是管理这个的好方法?我希望能够有效地运行整套测试,轻松地将测试标记为“不平行就绪”,如果我需要的话.
这里有一些我看到的选项:
> prove could be patched to support some tests as not-parallel-ready
> Jenkins被用来管理测试套件的运行.我可以将非平行测试分解成自己的运行.换句话说,放弃并使用两个测试运行.
>也许有一种方法可以将两个TAP结果流合并在一起,我还没有恢复.
我不太在意我如何管理异常列表.我可以将文件中的列表作为测试工具基础设施的一部分,或者我可以在每个测试头中添加一些标记,这样我们的测试工具可以动态地确定异常列表.
(测试套件部分基于Test :: Class,我也将看看Test :: Class :: Load来加快速度.)
解决方法
…This is useful,for example,in the case where some tests should
run in parallel but others are unsuitable for parallel execution.
my $formatter = TAP::Formatter::Console->new; my $ser_harness = TAP::Harness->new( { formatter => $formatter } ); my $par_harness = TAP::Harness->new( { formatter => $formatter,jobs => 9 } ); my $aggregator = TAP::Parser::Aggregator->new; $aggregator->start(); $ser_harness->aggregate_tests( $aggregator,@ser_tests ); $par_harness->aggregate_tests( $aggregator,@par_tests ); $aggregator->stop(); $formatter->summary($aggregator);
从那里看起来像我可以:
>子类App :: Prove并覆盖_runtests(),这是上述新功能可以合并的地方.
> Fork证明,它调用My :: App :: Prove而不是App :: Prove.
现在我更好地了解这些片段是如何组合在一起的,我可以看到我如何创建一个补丁,以证明它将添加一个选项,如–exclude-from-parallel FILE,这将允许您指定一个文件,其中包含测试文件被排除在并行测试之外.
更新2012-08-16:我有一个补丁现在证明,并已提交审查.您可以在view and comment on the Pull Request.运行输出后不会生成汇总.不清楚为什么