在我为Test::Class
阅读的所有教程中,似乎有一个加载所有类的跑步者脚本。我认为从Test::Harness
的角度来看,这只是一个巨大的考验。我不认为它可以并行化跑步者内部的测试。
我的X问题是我试图在测试子类时分解超类行为。每个子类都应该有自己的子类测试(可以并行化),但也要运行从超类继承的行为。那是怎么回事?
编辑:我发现这些来自2007年的帖子似乎暗示我要求的是不兼容/不可能的。从那时起的任何更新?
Test::Class
支持并行性Test::Class
和Test::Harness
在意识形态上是独占的)答案 0 :(得分:5)
Test::Class
并不支持并行化。可能最简单的解决方案是为每个测试类(或测试类的逻辑组)分别使用.t
个运行程序,并使用例如prove -j9
如果您真的想要并行运行所有测试,您可以编写一个简单的脚本来为每个测试类自动生成.t
文件。您在单个perl解释器中失去了运行多个测试类的性能优势,但并行化可能会补偿额外的启动开销。而且我认为无论Test::Class
尝试提供多少测试隔离,都无法保证在Perl中。一旦你开始利用修改符号表进行模拟等目的,你的测试将开始相互干扰,除非你总是得到正确的清理。在单独的perl解释器中运行每个测试是提供有保证隔离的更好方法。
答案 1 :(得分:3)
为了使Test :: Class并行,我使用了以下机制。希望它可以帮到你。
我已经使用 Parallel::ForkManager
模块来调用测试。但是
参数化 TEST_METHOD
环境变量,以便运行所需的测试
在每个帖子中并行
这提供了其他测试之间的隔离,因为每个测试都是独立调用的,并且
管理线程进程以等待所有子进程完成