IntelliJ IDEA未能识别.feature文件

12
我已经在IntelliJ IDEA中安装了cucumber-java和gherkin插件,但是当我创建一个.feature文件时,它没有被识别为特性文件。我已经重新启动了IntelliJ并检查了插件设置窗口确保插件已启用。 在IntelliJ中的特性文件

我有同样的问题,但在我正在处理的某些项目中,功能文件会被自动识别,而在我的项目中它们没有被识别 =/ - Akyo
12个回答

21

检查设置->编辑器->文件类型。确认Cucumber场景设置为*.feature的注册模式。


1
这提示我卸载了阻止其工作的Substeps。 - Zeek Aran
1
这对我有用。由于某种原因,.feature被添加到Groovy中。 - Toofy

19
如果您启用了Substeps IntelliJ插件,则可能会出现问题。您需要将其删除并重新启动。

4
谢谢。如果没有这个其他的插件阻止我,我就不需要这里的另一个答案了。 - Zeek Aran

10

检查文件->设置->编辑器->文件类型并单击文本文件类型。查看下面的已注册模式部分,验证您尝试创建的文件是否不在文本文件类型的已识别模式列表中。

如果您在没有最初给文件添加.feature扩展名的情况下创建了该文件,那么如果之后尝试添加扩展名,IntelliJ仍然会将其视为文本文件,并不将其作为功能文件对待。这对我来说是解决方法。

如果您发现IntelliJ将您要创建的预期功能文件识别为其他类型的文件,则请检查该文件类型的已识别模式,并再次验证您要创建的文件是否未在该列表中。

请参见 http://www.gisremotesensing.com/2014/11/solution-intellij-not-recognizing.html

对于某些设置,这只是半个故事。一旦您删除了旧文件类型,请按照以下步骤操作:

  • 在“已识别的文件类型”中选择“Cucumber scenario”
  • 在“已注册模式”框中单击“+”,并输入“*.feature”

现在您已经全部设置完毕。功能文件将恢复正常。


在我的情况下,我创建的文件没有“.feature”扩展名,所以我通过创建一个新文件并添加“. feature”扩展名来进行修复,问题得到了解决 :)。 - Akyo
我曾遇到相同的问题。卸载“Substeps IntelliJ插件”插件解决了我的问题,因为它也注册了.feature文件。 :) - Florian Baierl
1
你提供的链接对我很有帮助。谢谢。 - SelThroughJava

3

从菜单中的“文件”选项进入设置,然后 -> 编辑器 -> 文件类型 -> 选择Cucumber场景(已识别文件类型) 观察是否在“注册模式”中有*.feature,如果没有,则点击+图标并添加*.feature。 应用更改并保存。这解决了我的.feature文件问题。谢谢!


2

这个问题的根本原因是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>

1
我遇到了同样的问题: 我的IDE中没有启用Substeps......所以:
请检查您的文件类型模式中是否存在以前的文件的垃圾.feature。不知何故,我在文本格式文件类型下有两个特性文件......这导致新的特性文件在创建时无法被识别为特性文件。
我认为这会发生在您在创建时未将文件标记为特性文件,然后在重构后执行此操作。然后,IntelliJ会将特性文件的模式保存在文本类型下......

1
在我的情况下,当我尝试添加`.feature`文件时,会弹出提示框并将该文件添加为文本。然后,Intellij会自动建议找到与`.feature`文件匹配的插件(Gherkin插件)。安装了`Gherkin`插件之后,IntelliJ会自动使用`Gherkin`格式对文件进行格式化。

这就是帮助我让IntelliJ识别cucumber测试中的步骤的方法。 - undefined

1

InjelliJ IDEA 2021.1.2

我的功能文件名列在“设置”>“编辑器”>“文件类型”>“按内容自动检测文件类型”下。将其删除后,一切都正常工作。

IntelliJ IDEA 2021.1.2 Cucumber


0
对我来说情况更糟。.feature扩展名被分配给了文本文件。这很奇怪,因为之前创建的.feature文件仍然是真正的特性文件。但新创建的特性文件被视为纯文本。因此,请检查所有相关的文件类型,因为intelIj会对它们做出奇怪的处理。

0

使用IntelliJ IDEA 2022.1.2(旗舰版)

一个相当快速的手动修补方法是右键单击您想要识别的.feature文件。应该会出现一个下拉菜单。点击“覆盖文件类型”选项。然后,向下滚动直到找到“Gherkin”,并选择它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接