针对缺失方法的 IntelliJ 上下文建议

问题描述 投票:0回答:1

当使用 IntelliJ 并引用不存在的方法时,通常我会期望上下文建议“创建方法”并尝试使用明显的签名。这在过去曾经有效,但我发现现在的情况并非如此。

举个例子,如果我要创建一个 Spock 单元测试:

import spock.lang.Specification

class FizzBuzzTest extends Specification {
    FizzBuzz fizzBuzz
    void setup() {
        fizzBuzz = new FizzBuzz()
    }

    def "should show '1' for 1" () {
        String expected = "1"
        String actual = fizzBuzz.convert(1)

        expect:
        expected == actual
    }
}

引用的 FizzBuzz 类不存在,当转到上下文菜单时,它会提示您“创建 FizzBuzz 类”。这是预期的行为,并且有效。

完成此操作后,方法调用

fizzBuzz.convert(1)
应该带有下划线,表明它不存在,并且当转到上下文菜单时,系统应该提示您使用 String Convert(Integer) 的明显签名来创建它。 ..

这在过去是有效的。但是,当为教学示例设置一个具有“最小”设置的新项目时,我并没有让它表现得像那样。

运行测试会给出: 无方法签名:

FizzBuzz.convert()
适用于参数类型:(整数)值:[1] groovy.lang.MissingMethodException:没有方法签名:
FizzBuzz.convert()
适用于参数类型:(整数)值:[1]

但是当进入

fizzBuzz.convert(1)
的上下文菜单时,它仅提供“引入局部变量”或“删除不必要的括号”

版本:

org.spockframework:spock-core:2.3-groovy-4.0
JVM:14
Gradle:7.0

IntelliJ IDEA 2023.1.1 (Ultimate Edition)
Build #IU-231.8770.65, built on April 27, 2023
<Licensing info snipped... >
Runtime version: 17.0.6+10-b829.9 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 14.1
GC: G1 Young Generation, G1 Old Generation
Memory: 2048M
Cores: 16
Metal Rendering is ON
Non-Bundled Plugins:
    solarized (1.5)
    monokai-pro (1.10)
    IdeaVIM (2.7.0)
    com.atlassian.bitbucket.references (2022.1.224)
    com.github.kisstkondoros.codemetrics (1.0.4)
    GrepConsole (12.22.1-IJ2021.1)
    org.sonarlint.idea (8.2.0.68615)
    org.mapstruct.intellij (1.6.0)
    MetricsReloaded (1.12)
    io.snyk.snyk-intellij-plugin (2.4.59)
    zielu.gittoolbox (500.0.14+222)
    com.intellij.restClient.postmanConverter (1.0.4)

Kotlin: 231-1.8.21-IJ8770.65
methods tdd spock
1个回答
0
投票

我确认这在 CE 版本中也不起作用。然而,当我安装了 Vim 插件并重新启动后,它就按预期工作了。

因此,我回到了无法正常工作的原始设置,并选择了“修复 IDE”。重新索引后它没有修复。但“重新启动”后它就起作用了。

所以,我将认为这是 IntelliJ 的异常。谢谢您的关注。

© www.soinside.com 2019 - 2024. All rights reserved.