Perl 类测试可以并行运行吗?(或如何排除超类测试)

Perl 类测试可以并行运行吗?(或如何排除超类测试),perl,testing,Perl,Testing,在我为Test::Class阅读的所有教程中,似乎都有一个运行程序脚本加载所有类。我认为从Test::harnese的角度来看,这只是一个巨大的测试。我认为它无法将跑步者内部的测试并行化 我的X问题是,在测试子类时,我试图排除超类行为。每个子类都应该有自己的子类测试(可以并行化),但也要执行从超类继承的行为。你怎么知道的 编辑:我发现这两篇2007年的帖子似乎暗示我所要求的是不相容的/不可能的。从那以后有什么更新吗 (推测Test::Class支持并行性 (意味着Test::Class和Tes

在我为
Test::Class
阅读的所有教程中,似乎都有一个运行程序脚本加载所有类。我认为从
Test::harnese
的角度来看,这只是一个巨大的测试。我认为它无法将跑步者内部的测试并行化

我的X问题是,在测试子类时,我试图排除超类行为。每个子类都应该有自己的子类测试(可以并行化),但也要执行从超类继承的行为。你怎么知道的

编辑:我发现这两篇2007年的帖子似乎暗示我所要求的是不相容的/不可能的。从那以后有什么更新吗

  • (推测
    Test::Class
    支持并行性
  • (意味着
    Test::Class
    Test::harnese
    在意识形态上是排他性的)

Test::Class
本身不支持并行化。最简单的解决方案可能是为每个测试类(或测试类的逻辑组)使用单独的
.t
运行程序,并使用例如


如果你真的想并行运行所有的测试,你可以编写一个简单的脚本,为每个测试类自动生成一个
.t
文件。在一个perl解释器中运行多个测试类会失去性能优势,但是并行化可能会补偿额外的启动开销。我认为无论有多少
Test::Class
试图提供测试隔离,在Perl中都无法保证这一点。一旦您开始利用修改符号表进行模拟等,您的测试将开始相互干扰,除非您总是正确地进行清理。在单独的Perl interpre中运行每个测试ter是提供保证隔离的更好方法。

为了使Test::Class并行,我使用了以下机制。希望它能帮助您

我使用了
并行::ForkManager
模块来调用测试

参数化了
测试方法
环境变量,以便运行所需的测试

在每个线程中并行

这提供了其他测试之间的隔离,因为每个测试都是独立调用的,并且


线程进程被管理为等待所有子进程完成

您可以查看一下
forkprove
,但我不确定它是否能正确地与
Test::Class
一起工作,
Test::Harness
显然可以控制并行测试执行:当然可以。但我使用的是Test::Class,而不是Test::Harness。