如何在scalatest中进行并行测试之前初始化共享变量

时间:2017-09-11 21:54:30

标签: scala scala-collections scalatest parallel-testing

我有如下的最新代码:

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并打印它。我理解因为ParallelTestExecution扩展了OneInstancePerTest,所以这里的每个测试都在它自己的实例上运行,并且有一个变量" testSuiteId"。

但是我确实希望这个测试套件有一个固定的Id,并且这个套件中的每个测试用例都可以访问它而不修改它。我尝试在BeforeAll {}中创建固定ID,但它仍然无法正常工作。

我应该如何实现我的目标?

1 个答案:

答案 0 :(得分:0)

解决它的一种方法是将共享状态放在某种外部对象中:

object SuiteId {
  lazy val id: String = GenerateSomeRandomId()
}

不可否认,这非常糟糕,如果网站管理员有办法处理我不知道的内置内容,我不会感到惊讶。