java - 在 IntelliJ IDEA 中调试时,无法在“评估表达式”对话框中访问 Spock 测试的变量

标签 java intellij-idea groovy spock

在以下 Spock 测试中:

def 'simple assertion'() {
    expect:
    Math.max(a, b) == max

    where:
    a | b | max
    3 | 5 | 5
    4 | 9 | 9
    }

在 Expect block 的代码行中设置断点时,在调试时无法从 Evaluate Expression... 对话框访问变量 (a, b) 的值。返回的异常为:

groovy.lang.MissingPropertyException: No such property: a, b for class: DUMMY

解决这个问题的唯一方法是手动将 where 部分中的数据复制到求值表达式对话框中。

如何使用评估表达式而无需从测试的where部分手动复制值?

我使用在 macOS 12 Monterey 上运行的 IntelliJ IDEA Ultimate 2022.1,并使用 Groovy 版本 4 和 Gradle 作为构建工具。

最佳答案

当我显式声明参数时,它对我有用。

def 'simple assertion'(int a, int b, int max) {
    expect:
    Math.max(a, b) == max

    where:
    a | b | max
    3 | 5 | 5
    4 | 9 | 9
}

关于java - 在 IntelliJ IDEA 中调试时,无法在“评估表达式”对话框中访问 Spock 测试的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72249172/

相关文章:

intellij-idea - 如何在 IntelliJ IDEA 中多次运行同一个项目?

intellij-idea - Intellij : how to convert indents for all files

groovy - 命名参数的呕吐括号倒序

java - Android Studio 无法解析符号,但代码正确执行

grails - 由于 JNDI 查找,无法在 Grails 集成测试中初始化服务

java - 为什么 stash/unstash 在此 Jenkinsfile 中不起作用?

java - 虽然我使用 AsyncTask 但应用程序没有响应

java - 绝对 uri : http://java. sun.com/jsp/jSTL/core 无法在 web.xml 或在 tomcat 中使用此应用程序错误部署的 jar 文件中解析

java - 调试生活游戏,Java

java - 将 'expand' 按钮添加到没有子节点的 JTree 节点?