【发布时间】:2017-11-29 18:59:36
【问题描述】:
使用 scalatest Flatspec 和 TimeLimits 特征,我可以为一行代码设置超时,如下所示:
import org.scalatest.time.SpanSugar._
import org.scalatest.concurrent.TimeLimits
import org.scalatest.FlatSpec
class MyTestClass extends Flatspec with TimeLimits {
"My thread" must "complete on time" in {
failAfter(100 millis) { infiniteLoop() }
// I have also tried cancelAfter
}
}
这应该由于超时而失败。但是,当我在 Intellij 中运行此测试时,它会永远运行。
此外,我不想为每个方法重写超时,而是想为整个类配置一次。 PatienceConfig 声称可以这样做,但它似乎没有做任何事情。测试仍然会永远运行。
import org.scalatest.FlatSpec
import org.scalatest.time.{Millis, Span}
import org.scalatest.concurrent.{Eventually, IntegrationPatience}
class MyTestClass extends Flatspec with Eventually with IntegrationPatience {
implicit val defaultPatience = PatienceConfig(timeout=Span(100, Millis))
"My thread" must "complete on time" in {
inifiniteLoop()
}
}
【问题讨论】: