我feature files
中的src/resources/com/features
和step definitions
中的src/main/java/com/step_definitions
我的测试都运行正常,但是即使我要求它创建一个新的,因此,intelliJ拒绝查看步骤defs的位置。这个配置在哪里?
答案 0 :(得分:11)
我只是用完全相同的问题撕掉我的头发(记录我的背景是Java,Ruby,Cucumber和RubyMine,但我是IntelliJ和Cucumber-JVM的新手。)
在Cucumber-JVM run configuration
中,必须指定步骤定义存储在glue
字段中的包,如IntelliJ documentation中所述。 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
答案 1 :(得分:3)
默认约定是在step definitions
下的step_definitions sub-folder
中定义features directory
。子文件夹的名称并不重要;无论名称是什么,它都会起作用。
我的猜测是IDE会遵循相同的约定,因此如果在feature文件夹下移动了step_definitions文件夹,IntelliJ应该正确执行这些功能。
cucumber command
在执行功能之前需要-r
个选项来要求文件。此选项可用于使其在非传统位置查找step_definitions。
我猜你在黄瓜的本地配置上可能有-r src/main/java/com/step_definitions
从命令行调用时看到这些step_definitions。
运行cucumber --verbose
显示命令行在哪里找到步骤定义代码。
答案 2 :(得分:3)
如果您将文件夹标记为(测试)源根目录(右键单击文件夹 - &gt;标记目录为 - &gt;(测试)源根目录),它也可以正常工作。
我的grails项目设置如下:
test
├───cucumber
│ └───steps
│ └───support
│ └───features
└───unit
单位被标记为测试源根,在将黄瓜标记为一个之后,步骤定义被正确解析。
答案 3 :(得分:3)
您可以通过打开“编辑配置 - &gt;默认值 - &gt; Cucumber Java - &gt; Glue”来全局设置粘贴位置,并添加包名称。
(IntelliJ 12.1.4)
答案 4 :(得分:0)
我在版本12.1.3中遇到了同样的问题。我的文件夹和文件以标准方式列出,如其他答案所述,并将代码标记为测试源无法解析。
然后我更新到12.1.6问题得到解决:)