Grails 如何在intelliJ 12中定义cucumber的步骤定义位置
我在Grails 如何在intelliJ 12中定义cucumber的步骤定义位置,grails,intellij-idea,cucumber,geb,Grails,Intellij Idea,Cucumber,Geb,我在src/resources/com/features中有我的功能文件,在src/main/java/com/step\u定义中有我的步骤定义 我的测试都正常运行,但intelliJ拒绝查看步骤定义的位置,即使我要求它创建一个新的步骤定义。这是在哪里配置的?默认约定是在功能目录下的步骤定义子文件夹中定义步骤定义。子文件夹的名称并不重要;无论名字是什么,它都会起同样的作用 我的猜测是IDE将遵循相同的约定,因此如果将step_definitions文件夹移动到features文件夹下,Intel
src/resources/com/features中有我的功能文件
,在src/main/java/com/step\u定义中有我的步骤定义
我的测试都正常运行,但intelliJ拒绝查看步骤定义的位置,即使我要求它创建一个新的步骤定义。这是在哪里配置的?默认约定是在功能目录下的步骤定义子文件夹中定义步骤定义。子文件夹的名称并不重要;无论名字是什么,它都会起同样的作用
我的猜测是IDE将遵循相同的约定,因此如果将step_definitions文件夹移动到features文件夹下,IntelliJ应该正确执行功能
cucumber命令
使用-r
选项在执行功能之前需要文件。此选项可用于在非常规位置查找步骤定义
我猜您的本地配置中可能有-r src/main/java/com/step_定义
,以便cucumber在从命令行调用时查看这些step_定义
运行cumber--verbose
显示命令行在何处查找步骤定义代码 我也遇到了同样的问题(我的背景是Java、Ruby、Cucumber和RubyMine,但我对IntelliJ和Cucumber JVM完全陌生)
在run configuration
中,您必须指定步骤定义存储在glue
字段中的包,如中所述。IntelliJ——至少对我来说——似乎没有提供默认值
为了进一步说明,一个非常基本的项目如下所示:
Example
└───src
├───main
│ └───java
└───test
├───java
│ └───com
│ └───bensnape
│ └───example
│ MyStepdefs.java
└───resources
example.feature
test
├───cucumber
│ └───steps
│ └───support
│ └───features
└───unit
这里的glue
值应该是com.bensnape.example
更新
在今天早上再次使用IntelliJ之后,如果您遵守JVM约定,它似乎确实为您提供了glue
价值,即功能必须在src/test/resources/
下运行,同样,步骤必须在src/test/java/
下运行
项目树示例:
Example
└───src
├───main
│ └───java
└───test
├───java
│ └───com
│ └───bensnape
│ └───example
│ MyStepdefs.java
│
└───resources
└───com
└───bensnape
└───example
example.feature
如果将文件夹标记为(测试)源根目录(右键单击文件夹->将目录标记为->(测试)源根目录),它也可以工作
我的grails项目设置如下:
Example
└───src
├───main
│ └───java
└───test
├───java
│ └───com
│ └───bensnape
│ └───example
│ MyStepdefs.java
└───resources
example.feature
test
├───cucumber
│ └───steps
│ └───support
│ └───features
└───unit
单元被标记为测试源根,在也将cumber标记为一个之后,步骤定义被正确解析。我在版本12.1.3中遇到了相同的问题。我的文件夹和文件是按照其他答案中描述的标准方式设置的,将代码标记为测试源并没有解决问题
然后我更新到12.1.6,问题已经解决:)您可以通过打开“编辑配置->默认值->Cucumber Java->glue”全局设置粘合位置,并添加包名
(Intellij12.1.4)所以我现在重构了我的代码,看起来这似乎没有什么帮助。我还运行了配置,并将com.step_定义输入到粘合路径(默认配置)。我没有在这里输入任何其他内容,因为我不确定要放什么,可能这只会影响运行,而不会影响IDE?奇怪的是,它现在会拾取我的step def文件,当我选择帮助器创建step_定义时,它会给我一个文件列表,我可以将其放在其中。然而,它仍然坚持(即使在文件中添加了新方法)步骤定义未定义。你解决问题了吗?如果没有,也许你可以尝试用更多的信息更新这个问题,因为很难准确地看到你所面临的问题。我尝试将我的步骤定义移动到features/step_定义中,但似乎仍然找不到它们:(这是我的grails项目的答案。谢谢。