我试图并行执行部分测试,所以我用ParallelTestExecution
trait扩展了这些测试类,唯一的问题是它一次运行太多的测试。据我所知,它运行到2 * number_of_cpu_cores
,所以在我的情况下2*8测试。它的方式太多,我想限制它到4线程最大。我试过使用SBT concurentRestrictions in Test
设置,但它不会改变任何东西(我认为它只影响并发测试类的执行,不影响一个类中并发测试的数量)。有没有办法强制scalaTest并行运行max N个测试?如果我可以设置每个测试类的线程数最大值,因为有些测试消耗的资源更少,我可以一次运行4个以上。
3条答案
按热度按时间dsekswqp1#
所以一年多后我又回到了这个问题上,因为我以前没能解决它。我在这个项目中提出了一个解决方案:https://github.com/agido/pageobject。它比我需要的要复杂一些,所以基于他们的代码,我创建了一个简单的解决方案,只有一个trait,可以用作标准
ParallelTestExecution
的替代品。:它是如何工作的,一些例子可以在这里找到:https://github.com/mateuszgruszczynski/scalatesttwolevelparallelism
lsmepo6l2#
尝试将这一行添加到您的sbt项目设置中:
http://www.scalatest.org/user_guide/using_the_runner:
-P选项可以可选地附加数字(例如,例如“-P10”-没有中间空格)来指定要在线程池中创建的线程的数量。如果未指定任何数字(或0),则将根据可用处理器的数量决定线程的数量。
8gsdolmq3#
我已经尝试在测试设置中使用SBT concurrentRestrictions,但它不会改变任何东西
SBT documentation说:
这必然是一组全局规则,因此其作用域必须为Global /。
你需要像这样使用它:
我认为它只影响并发测试类的执行,而不影响一个类中并发测试的数量
除非使用ParallelTestExecution,否则测试类中的各个测试将按顺序运行,只有类(套件)会并行运行。