【问题标题】:How do I convert a directory to a package in IntelliJ如何在 IntelliJ 中将目录转换为包
【发布时间】:2020-06-11 15:36:25
【问题描述】:

我正在建立一个 Cucumber + Java 项目,项目结构如下:

我的配置正确映射了主类、功能文件夹,并且胶水映射到“stepdefs”。

但是,在尝试运行测试时,我会收到 Cucumber 的“未定义步骤”消息:

Step undefined
You can implement missing steps with the snippets below:
@Given("user is on the homepage")
public void user_is_on_the_homepage() {
    // Write code here that turns the phrase above into concrete actions
    throw new io.cucumber.java.PendingException();
}

我注意到Steps.java 文件中的类名被突出显示并抱怨“步骤定义类必须在命名包中”

我尝试将package stepdefs 添加到文件顶部,但这似乎不起作用(“stepdefs”将加下划线并带有注释“包名称'stepdefs'与文件不对应路径''")。

更新:

根据@tashkhisi 的一些建议,这是我的新项目结构:

【问题讨论】:

  • 目录必须在源文件夹中才能成为包。如果将父文件夹标记为源目录并将其变为蓝色,则应将其检测为包
  • 你是对的!但我仍然从 Cucumber 那里得到“未定义的场景”。
  • 我认为 .feature 文件应该在资源目录下,顺便说一下,您可以使用为您创建最佳目录结构的 maven 原型。请点击此链接:cucumber.io/docs/guides/10-minute-tutorial
  • @tashkhisi 功能在资源下,我遵循了目录结构的提示,但仍然没有运气。

标签: java intellij-idea cucumber cucumber-jvm


【解决方案1】:

以下第一个链接对于开始使用黄瓜非常有用,我建议您点击该链接以获得更好的解释。

Getting started with Cucumber

但这应该是你的目录结构 我建议您使用常规名称,但如果您决心这样做,请执行以下操作: 将stepsdef标记为测试源根目录

更新:

您的主目录必须是 test 而不是 main。

用于运行测试的 @RunWith(Cucumber.class) 注释在哪里?

你为什么不使用下面的命令来创建最好的目录结构?

在java和资源内部你应该有相同的目录结构

mvn archetype:generate                      \
   "-DarchetypeGroupId=io.cucumber"           \
   "-DarchetypeArtifactId=cucumber-archetype" \
   "-DarchetypeVersion=5.6.0"               \
   "-DgroupId=hellocucumber"                  \
   "-DartifactId=hellocucumber"               \
   "-Dpackage=hellocucumber"                  \
   "-Dversion=1.0.0-SNAPSHOT"                 \
   "-DinteractiveMode=false"

【讨论】:

  • 能否请您输入新的目录结构并完成您看到的错误
  • 查看更新的 OP 以了解新的 dir 结构。已经给出了完整的错误。 "Step undefined ..." 之后只有跳过的步骤,没有更多,之前什么都没有。
  • 如何在代码中运行测试?没有带有 @RunWith(Cucumber.class) 注释的类,并且在 java 和资源内部,您应该具有相同的目录结构,请参阅我的结构!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 2015-04-11
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多