如何在ScalaTest / SBT中按顺序运行测试套件?

5

如何在ScalaTest / SBT中按顺序运行测试套件?

例如,如果我有测试套件A、B和C,我希望确保先运行A的测试,然后是B的,最后是C的。

在ScalaTest或SBT中是否有配置可以实现这一点?

谢谢。

3个回答

2

尝试在测试中使用parallelExecution := false


你好,Raj。感谢你的回答。就我理解,这个命令是为了按顺序运行同一测试套件中的测试。 - Farah
为了进一步解释@Farah的回答,原帖作者想在不同的测试套件中并行运行一些测试,但是同一套件中的测试应该按顺序运行。 - Bob Dalgleish

2
根据文档http://doc.scalatest.org/1.7/org/scalatest/Suite.html,您需要创建自己的测试套件,如下所示:

FirstTest.scala


import org.scalatest.{DoNotDiscover, FunSuite}

@DoNotDiscover
class FirstTest extends FunSuite {

  test("first test"){
    assert(1 == 1)
  }

}

SecondTest.scala

import org.scalatest.{DoNotDiscover, FunSuite}

@DoNotDiscover
class SecondTest extends FunSuite{

  test("second test"){
    assert(2 == 2)
  }
}

MainTest.scala

import org.scalatest.Suites
class MainTest extends Suites (new FirstTest,new SecondTest)

现在,如果您运行sbt test,它将正常工作。
注意:属性@DoNotDiscover是必需的。这可以避免意外行为,例如在执行MainSuite之后执行已经执行了两个测试套件的FirstTest和SecondTest。
希望对您有所帮助。

1
我认为这是最好的方式,而且不受你使用哪种构建工具(sbt、gradle等)的影响。 - Mopper

1
raj mehra所说,解决方案是配置为不并行运行测试。 Test / parallelExecution := false 以前的parallelExecution in Test := false已经过时。
这里是解释文档:SBT Parallel Execution 从中可以得知:
与以前一样,parallelExecution in Test控制测试是否映射到单独的任务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接