You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Spock/Groovy中Java Lambda调用始终返回null的测试用例?

问题解决方法

你的测试用例中,Java Lambda的写法本身没有语法错误,但可以通过调整写法和移除冗余操作,确保测试用例执行通过:

方式一:简化Lambda表达式

当Lambda体只有单条返回语句时,可省略大括号和return关键字,Groovy对这种简化写法的类型兼容性更好:

def 'test of java lambda' () {
    given: 
    Callable<String> working = () -> "working"

    and:
    def executor = Executors.newFixedThreadPool(2)

    when:
    def result = executor.submit(working)

    then:
    result.get() != null
}

方式二:移除冗余的线程等待

Future.get()是阻塞方法,会自动等待任务执行完成后返回结果,无需额外调用Thread.sleep(1000),移除后逻辑更清晰:

def 'test of java lambda' () {
    given: 
    Callable<String> working = () -> { return "working" }

    and:
    def executor = Executors.newFixedThreadPool(2)

    when:
    def result = executor.submit(working)

    then:
    result.get() != null
}

额外检查

若仍有问题,请确认已正确导入并发相关类:

import java.util.concurrent.Callable
import java.util.concurrent.Executors

内容的提问来源于stack exchange,提问作者Krzysztof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:30:13