黄瓜,Java:在特定文件中忽略步骤定义

时间:2020-09-02 10:58:25

标签: java intellij-idea cucumber

我已经使用Cucumber功能文件和Java步骤定义文件进行了简单的设置。

feature.feature-> StepDefinition.java-> PageObject.java

特别是:

STEP:                              Step definition file:                          
Given I am logged in as ....    -> LoginSteps.java
And I am at the workspace       -> WorkspaceSteps.java
And I start a new application   -> WorkspaceSteps.java
And I accept                    -> AcceptPage.java  - does not work. 
- BUT:
And I accept                    -> AcceptPage.java  - DOES work

如上所示,我在这里使用三步定义文件。黄瓜可以识别两个文件中的步骤定义。但是,当它在AcceptPage.java文件中定义时,它甚至不会尝试运行“并且我接受”步骤。如果将其移至WorkspaceSteps.java文件,它将运行正常。

没有抱怨缺少步骤定义。实际上,没有错误消息,只是测试结果呈橙色。

IntelliJ运行窗口:

Test results                     4s462ms
- Feature: Complete application  4s462ms
- - Scenario: Budget             4s462ms
- - - And I accept               0ms

.feature文件:

Scenario: Budget
# Login/workspace
Given I am logged in as "12048746711"
And I am on the Workspace screen
And I start a new application
  
# Accept
And I accept

LoginSteps.java:

@Given("^I am logged in as \"([^\"]*)\"$")
public void iLogInWithId(String id) {
    login(createPersonInfo(id));
}

WorkspaceSteps.java

@Given("^And I am on the Workspace screen$")
public void iAmOnScreenWorkspace() {
    iAmOnWorkspace();
}

@Given("^I start a new application$")
public void startNewApplication() {
    workSpacePage.applyForLoan.click();
}

AcceptPage.java

@Given"^I accept$")
public void iAccept() {
    System.out.print("");
    acceptPage.iAccept.click();
}

指向AcceptPage.java上的iAccept()方法的步骤未运行。即使我在System.out.print()行上放置一个断点并进行调试,它也不会停止甚至到达那里。

但是,如果我将整个iAccept()方法移到WorkSpace.java文件中,则一切正常。

有什么想法吗?

当然,我已使IntelliJ的缓存无效并重新启动。我什至尝试创建一个全新的Steps文件,其中包含一个具有新名称的新步骤。相同:Cucumber测试拒绝去到WorkspaceSteps.java文件之外的任何地方。这开始看起来完全是白痴,愚蠢和荒谬。

1 个答案:

答案 0 :(得分:0)

事实证明,解决方案确实很愚蠢。由于某些原因,IntelliJ从配置中的Glue中删除了顶层软件包,而是添加了特定软件包。因此,当使用不属于那些软件包的文件时,无需进一步说明就将其忽略。删除特定的程序包并输入顶层程序包即可解决问题。