检查设置->编辑器->文件类型。确认Cucumber场景设置为*.feature的注册模式。
检查文件->设置->编辑器->文件类型并单击文本文件类型。查看下面的已注册模式部分,验证您尝试创建的文件是否不在文本文件类型的已识别模式列表中。
如果您在没有最初给文件添加.feature扩展名的情况下创建了该文件,那么如果之后尝试添加扩展名,IntelliJ仍然会将其视为文本文件,并不将其作为功能文件对待。这对我来说是解决方法。
如果您发现IntelliJ将您要创建的预期功能文件识别为其他类型的文件,则请检查该文件类型的已识别模式,并再次验证您要创建的文件是否未在该列表中。
请参见 http://www.gisremotesensing.com/2014/11/solution-intellij-not-recognizing.html
对于某些设置,这只是半个故事。一旦您删除了旧文件类型,请按照以下步骤操作:
现在您已经全部设置完毕。功能文件将恢复正常。
从菜单中的“文件”选项进入设置,然后 -> 编辑器 -> 文件类型 -> 选择Cucumber场景(已识别文件类型) 观察是否在“注册模式”中有*.feature,如果没有,则点击+图标并添加*.feature。 应用更改并保存。这解决了我的.feature文件问题。谢谢!
这个问题的根本原因是Cucumber-Java插件在StepDefinitions文件中寻找从包cucumber.api.java.en.Given
(已弃用)导入的BDD注释。如果StepDefinitions文件包含来自包io.cucumber.java.en.Given
的BDD注释,则功能文件将无法识别/突出显示这些步骤。此问题与Intellij版本无关。
临时解决方案
在StepDefinitions文件中更改您的导入语句,从import io.cucumber.java.en.Given;
更改为import cucumber.api.java.en.Given;
,对于When, Then和But
也应该这样做,除非您不介意使用已弃用的方法;)
注意
如果您使用info.cukes
依赖项,则不会遇到cucumber-java插件的任何问题
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.2.5</version>
</dependency>
如果你有io.cucumber
依赖项,你需要使用临时解决方案
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>4.6.0</version>
</dependency>
使用IntelliJ IDEA 2022.1.2(旗舰版)
一个相当快速的手动修补方法是右键单击您想要识别的.feature
文件。应该会出现一个下拉菜单。点击“覆盖文件类型”选项。然后,向下滚动直到找到“Gherkin”,并选择它。