无法编写简单的步骤,将单个字符串作为参数传递

时间:2018-08-21 19:53:15

标签: java regex cucumber

我每天都与JBehave一起工作,但是受命从事使用Cucumber的项目。为了向该项目添加自定义报告类功能,我需要添加两个步骤,一个步骤在功能(故事)的开始,另一步在方案的开始。我只想将要传递给报告模块的功能/故事和场景的描述传递给应用程序。我知道,cucumber可以通过代码访问场景名称,但这只能解决两行之一-我仍然需要让另一行传递功能/故事的描述。

我在功能文件中尝试过的操作:

Feature: Ecolab BDD Test Automation Demo

Scenario Outline: User can login and logout from the landing page
    Given story "EcolabWebDemo_TestCases - Ecolab BDD Test Automation Demo"
    Given scenario "User can login and logout from the landing page"
    Given I am on the Ecolab landing page

在上面的开头添加了两个Given语句的相应代码:

@Given("^story {string}$") // \"(\\S+)\"
public void givenStory(String storyName) {
    test.initStory(storyName); // will show on report in Features column
}

@Given("^scenario {string}$") // \"(\\S+)\"
public void givenScenario(String scenarioName) {
    test.initScenario(scenarioName);
}

随后评论的正则表达式模式是我应该尝试的建议模​​式,但似乎也不起作用。

当前配置似乎至少可以“找到”步骤,但报告:

  

cucumber.runtime.CucumberException:   java.util.regex.PatternSyntaxException:索引附近非法重复   13 ^场景{string} $

因此,显然这不是解决方案。代替{string}使用的正则表达式根本找不到匹配项并且无法运行。

对我来说,regex是绝对的希腊语,不知道为什么它不能像黄瓜的文档中的{string}选项那样简单。我一直在网上搜索指导,这在两天的大部分时间里都无济于事,显然我什至不知道要搜索什么。

1 个答案:

答案 0 :(得分:0)

根据Grasshopper的建议,我将Cucumber的版本从1.2.0更新为1.2.5。我准备将pom.xml更改为使用3.x版本,但首先尝试使用指定库的最新版本,并且在尝试运行后确实报告了我添加的两个步骤正确的正则表达式。

@Given("^story \"([^\"]*)\"$")

@Given("^scenario \"([^\"]*)\"$")

现在该项目的版本似乎可以识别字符串并报告缺少的步骤,该项目现在可以按预期运行。

感谢您的帮助,蚱hopper。