gpt4 book ai didi

scalatest Flatspec : Timeout for entire class

转载 作者:行者123 更新时间:2023-11-28 19:53:57 24 4
gpt4 key购买 nike

使用最高级的 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()
}
}

最佳答案

我自己寻找解决方案。来了一个十字架 this回答,它对我有用。我正在使用 flatspec,添加了 TimeLimitedTests 特性

with TimeLimitedTests

然后在代码中我为每个测试写下了限制 val timeLimit: Span = Span(2000, Millis)这是由特征定义的(我们正在覆盖它)。

直到我按照 Rumoku 在

override val defaultTestInterruptor: Interruptor = new Interruptor {
override def apply(testThread: Thread): Unit = {
println("Kindly die")
testThread.stop() // deprecated. unsafe. do not use
}}

希望对你有帮助

关于scalatest Flatspec : Timeout for entire class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47379756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com