unit-testing - Groovy Spock阻止变量从未发布

标签 unit-testing grails groovy spock

我正在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/

相关文章:

php - Mock 应该恰好被调用 1 次但被调用 0 次

Grails 日志记录不起作用

grails - 在Grails中本地化验证(错误)消息

java - Groovy - 主要方法放置

groovy - 任务方法的gradle参数顺序

grails - 如何在Grails 2.2.4中模拟PagedResultList

c# - 需要使用系统库对服务进行单元测试

需要身份验证服务的 GET 请求的 Angular Testing

使用Google Mock进行C++高性能单元测试?

grails - Grails应用程序关闭