9

我有我feature filessrc/resources/com/features和我step definitionssrc/main/java/com/step_definitions

我的测试都运行正确,但 IntelliJ 拒绝查看步骤定义在哪里,即使我要求它创建一个新的。这是在哪里配置的?

4

5 回答 5

12

我刚刚遇到完全相同的问题(据记录,我的背景是 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 约定,它似乎确实为您提供了价值 - 即功能必须存在于下面,类似地,步骤必须存在于.gluesrc/test/resources/<package>src/test/java/<package>

示例项目树:

Example
└───src
    ├───main
    │   └───java
    └───test
        ├───java
        │   └───com
        │       └───bensnape
        │           └───example
        │                   MyStepdefs.java
        │
        └───resources
            └───com
                └───bensnape
                    └───example
                            example.feature
于 2012-12-28T21:45:09.917 回答
4

如果您将文件夹标记为(测试)源根目录(右键单击文件夹 -> 将目录标记为 ->(测试)源根目录),它也可以正常工作。

我的 grails 项目是这样设置的:

        test
        ├───cucumber
        │   └───steps
        │   └───support
        │   └───features
        └───unit

单元被标记为测试源根,在将黄瓜标记为之一之后,步骤定义被正确解析。

于 2013-01-25T10:47:41.480 回答
3

默认约定是step definitions在. 子文件夹的名称并不重要;无论名称是什么,它都可以正常工作。step_definitions sub-folderfeatures directory

我的猜测是 IDE 将遵循相同的约定,因此如果将 step_definitions 文件夹移动到 features 文件夹下,IntelliJ 应该正确执行这些功能。

在执行功能之前cucumber command需要一个选项来要求文件。-r此选项可用于使其在非传统位置查找 step_definitions。

我猜你可能-r src/main/java/com/step_definitions在你的本地配置中有黄瓜从命令行调用时看到这些 step_definitions。

运行cucumber --verbose显示命令行在哪里找到步骤定义代码。

于 2012-12-22T04:42:09.710 回答
3

您可以通过打开“Edit Configurations -> Defaults -> Cucumber Java -> Glue”并添加包名称来全局设置粘合位置。

(智能 12.1.4)

于 2014-02-06T10:34:12.960 回答
0

我在 12.1.3 版中遇到了同样的问题。我的文件夹和文件以其他答案所述的标准方式设置,并将代码标记为测试源并没有解决它。

然后我更新到 12.1.6 问题得到解决:)

于 2013-10-25T13:24:08.880 回答