我正在Grails应用程序中与Spock单元测试进行一场艰苦的战斗。我想测试异步行为,为了熟悉Spock的BlockingVariable
,我编写了这个简单的示例测试。
void "test a cool function of my app I will not tell you about"() {
given:
def waitCondition = new BlockingVariable(10000)
def runner = new Runnable() {
@Override
void run() {
Thread.sleep(5000)
waitCondition.set(true)
}
}
when:
new Thread(runner)
then:
true == waitCondition.get()
}
不幸的是,这不是一件好事,因为否则它将会终结。当我在
Thread.sleep()
上设置断点并调试测试时,永远不会命中该断点。我想念什么?
最佳答案
您的测试已失败,因为您实际上没有运行所创建的线程。代替:
when:
new Thread(runner)
你应该做:
when:
new Thread(runner).run()
然后大约5秒钟后测试成功。
关于unit-testing - Groovy Spock阻止变量从未发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52492680/