我每天都与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}选项那样简单。我一直在网上搜索指导,这在两天的大部分时间里都无济于事,显然我什至不知道要搜索什么。
答案 0 :(得分:0)
根据Grasshopper的建议,我将Cucumber的版本从1.2.0更新为1.2.5。我准备将pom.xml更改为使用3.x版本,但首先尝试使用指定库的最新版本,并且在尝试运行后确实报告了我添加的两个步骤正确的正则表达式。
@Given("^story \"([^\"]*)\"$")
和
@Given("^scenario \"([^\"]*)\"$")
现在该项目的版本似乎可以识别字符串并报告缺少的步骤,该项目现在可以按预期运行。
感谢您的帮助,蚱hopper。