如何在scalatest中的并行测试之前初始化共享变量
How to initialize shared variables before parallel test in scalatest
我有如下最严重的代码:
class myTest extends FlatSpec with ParallelTestExecution {
val testSuiteId: String = GenerateSomeRandomId()
it should "print test id" in {
println(testSuiteId)
}
it should "print test id again" in {
println(testSuiteId)
}
}
这两个测试无法打印我在它们之前生成的testSuiteId。相反,他们重新生成 ID 并打印出来。我知道由于扩展了 OneInstancePerTest 的 ParallelTestExecution,这里的每个测试都在其自己的实例上运行并具有变量 "testSuiteId".
的副本
但是我确实想要这个测试套件的固定 ID,并且这个套件中的每个测试用例都可以访问这个固定的 Id 而无需修改它。我尝试在 BeforeAll{ } 中创建固定 ID,但仍然无效。
我应该如何实现我想要的?
一种解决方法是将共享状态放在某种外部对象中:
object SuiteId {
lazy val id: String = GenerateSomeRandomId()
}
不可否认,这完全是一个 hack,如果 scalatest 有办法处理这个我不知道的内置函数,我不会感到惊讶。
我有如下最严重的代码:
class myTest extends FlatSpec with ParallelTestExecution {
val testSuiteId: String = GenerateSomeRandomId()
it should "print test id" in {
println(testSuiteId)
}
it should "print test id again" in {
println(testSuiteId)
}
}
这两个测试无法打印我在它们之前生成的testSuiteId。相反,他们重新生成 ID 并打印出来。我知道由于扩展了 OneInstancePerTest 的 ParallelTestExecution,这里的每个测试都在其自己的实例上运行并具有变量 "testSuiteId".
的副本但是我确实想要这个测试套件的固定 ID,并且这个套件中的每个测试用例都可以访问这个固定的 Id 而无需修改它。我尝试在 BeforeAll{ } 中创建固定 ID,但仍然无效。
我应该如何实现我想要的?
一种解决方法是将共享状态放在某种外部对象中:
object SuiteId {
lazy val id: String = GenerateSomeRandomId()
}
不可否认,这完全是一个 hack,如果 scalatest 有办法处理这个我不知道的内置函数,我不会感到惊讶。