首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scalatest -并行套件

Scalatest -并行套件
EN

Stack Overflow用户
提问于 2020-09-01 15:23:52
回答 1查看 192关注 0票数 4

我使用的是一个套件(Scalatest-version: 3.2.2),里面有几个TestSuites:

代码语言:javascript
复制
class SuiteMixedSequentialParallel
    extends Stepwise(
      new TestInParallel,
      new TestSequentially
    )

现在,我希望TestInParallel中的所有测试都应该并行执行,TestSequentially中的所有测试都应该按顺序执行。

因此,我从ParallelTestExecution扩展了TestInParallel

代码语言:javascript
复制
class TestInParallel extends AnyFunSuite with ParallelTestExecution {
  (0 to 10).foreach(i =>
    test(s"$i") {
      Thread.sleep(500)
      println(s"TestInParallel $i")
    }
  )
}
代码语言:javascript
复制
class TestSequentially extends AnyFunSuite {
  (0 to 10).foreach(i =>
    test(s"$i") {
      Thread.sleep(200)
      println(s"TestSequentially $i")
    }
  )
}

当我运行sbt testOnly TestInParallel时,所有测试都是并行执行的。但是:当我运行sbt testOnly SuiteMixedSequentialParallel时,所有测试都是按顺序执行的。

当我运行SuiteMixedSequentialParallel时,有没有人知道如何实现我在TestInParallel中的测试并行运行?

套件TestInParallelTestSequentially应该仍然按顺序运行。只有TestInParallel中的测试应该并行运行。

EN

回答 1

Stack Overflow用户

发布于 2020-09-01 20:31:26

来自Stepwise documentation

执行StepsSuite时,无论是否传递了分发服务器,它都将按照传递的顺序依次执行其嵌套套件: Step1Suite、Step2Suite、Step3Suite、Step4Suite和Step5Suite。

来自ParallelTestExecution documentation

ScalaTest并行运行测试套件的正常方法是并行运行不同的套件,但任何一个套件的测试都是顺序运行的。

因此,当您将以上两者结合起来时,您会阻止scalatest并行运行,这样即使是TestInParallel也是顺序运行的。

为了解决这个问题,您需要将ParallelTestExecution特征混合到SuiteMixedSequentialParallel中,这意味着:

代码语言:javascript
复制
class SuiteMixedSequentialParallel
  extends Stepwise(
    new TestInParallel,
    new TestSequentially
) with ParallelTestExecution

这将并行运行两个套件,并行运行TestInParallel中的测试,并顺序运行TestSequentially中的测试。如你所愿。

为了验证这一点,我将printlnHallo Welt分别更改为TestInParallelTestSequentially

我得到的输出是:

代码语言:javascript
复制
TestInParallel 8
TestInParallel 4
TestInParallel 0
TestInParallel 7
TestInParallel 5
TestInParallel 3
TestSequentially 0
TestInParallel 2
TestInParallel 1
TestInParallel 9
TestInParallel 6
TestSequentially 1
TestSequentially 2
TestSequentially 3
TestSequentially 4
TestSequentially 5
TestSequentially 6
TestSequentially 7
TestSequentially 8
TestSequentially 9
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63683141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档