我有我feature files
的src/resources/com/features
和我step definitions
的src/main/java/com/step_definitions
我的测试都运行正确,但 IntelliJ 拒绝查看步骤定义在哪里,即使我要求它创建一个新的。这是在哪里配置的?
我有我feature files
的src/resources/com/features
和我step definitions
的src/main/java/com/step_definitions
我的测试都运行正确,但 IntelliJ 拒绝查看步骤定义在哪里,即使我要求它创建一个新的。这是在哪里配置的?
我刚刚遇到完全相同的问题(据记录,我的背景是 Java、Ruby、Cucumber 和 RubyMine,但我对 IntelliJ 和 Cucumber-JVM 完全陌生)。
在 Cucumber-JVM中run configuration
,您必须在IntelliJ 文档glue
中提到的字段中指定存储步骤定义的包。IntelliJ - 至少对我来说 - 似乎没有提供默认值。
为了进一步阐述,一个非常基本的项目如下所示:
Example
└───src
├───main
│ └───java
└───test
├───java
│ └───com
│ └───bensnape
│ └───example
│ MyStepdefs.java
└───resources
example.feature
这里的glue
值是com.bensnape.example
。
今天早上又玩了一些 IntelliJ 之后,如果您遵守 Cucumber-JVM 约定,它似乎确实为您提供了价值 - 即功能必须存在于下面,类似地,步骤必须存在于.glue
src/test/resources/<package>
src/test/java/<package>
示例项目树:
Example
└───src
├───main
│ └───java
└───test
├───java
│ └───com
│ └───bensnape
│ └───example
│ MyStepdefs.java
│
└───resources
└───com
└───bensnape
└───example
example.feature
如果您将文件夹标记为(测试)源根目录(右键单击文件夹 -> 将目录标记为 ->(测试)源根目录),它也可以正常工作。
我的 grails 项目是这样设置的:
test
├───cucumber
│ └───steps
│ └───support
│ └───features
└───unit
单元被标记为测试源根,在将黄瓜标记为之一之后,步骤定义被正确解析。
默认约定是step definitions
在. 子文件夹的名称并不重要;无论名称是什么,它都可以正常工作。step_definitions sub-folder
features directory
我的猜测是 IDE 将遵循相同的约定,因此如果将 step_definitions 文件夹移动到 features 文件夹下,IntelliJ 应该正确执行这些功能。
在执行功能之前cucumber command
需要一个选项来要求文件。-r
此选项可用于使其在非传统位置查找 step_definitions。
我猜你可能-r src/main/java/com/step_definitions
在你的本地配置中有黄瓜从命令行调用时看到这些 step_definitions。
运行cucumber --verbose
显示命令行在哪里找到步骤定义代码。
您可以通过打开“Edit Configurations -> Defaults -> Cucumber Java -> Glue”并添加包名称来全局设置粘合位置。
(智能 12.1.4)
我在 12.1.3 版中遇到了同样的问题。我的文件夹和文件以其他答案所述的标准方式设置,并将代码标记为测试源并没有解决它。
然后我更新到 12.1.6 问题得到解决:)