【发布时间】:2019-03-11 20:43:47
【问题描述】:
运行
package com.thron.qa.tests
import org.scalatest.{FunSuite, ParallelTestExecution}
import org.scalatest.concurrent.Eventually
class ParallelRuntimeTest extends FunSuite with Eventually with ParallelTestExecution{
Vector.range(0,10).foreach(iteration => {
test ("test number n " + iteration.toString) {
succeed
}
})
}
我获得运行时测试创建:对向量的迭代构建到测试,并且每个测试都具有成功状态,如您在 Idea Ide 中看到的那样
现在,我想并行化这些测试
通常我使用 .par 来获得操作的并行化, 所以代码变成了
Vector.range(0,10).par.foreach(iteration => {
test ("test number n " + iteration.toString) {
succeed
}
})
但在这种情况下, 我收到此错误:
异常或错误导致运行中止:两个线程试图 修改 FunSuite 的内部数据,只能由 构造对象的线程。这可能意味着一个子类 允许 this 引用在构造过程中逃逸,还有一些 其他线程试图调用“testsFor”或“test”方法 第一个线程完成其构造之前的对象。 java.util.ConcurrentModificationException:两个线程试图 修改 FunSuite 的内部数据,只能由 构造对象的线程。这可能意味着一个子类 允许 this 引用在构造过程中逃逸,还有一些 其他线程试图调用“testsFor”或“test”方法 第一个线程完成其构造之前的对象。
如何在运行时创建测试并以并行方式运行?
谢谢
【问题讨论】: