黄瓜5.6.0中的小黄瓜{string}参数黄瓜表达式替换似乎不起作用

时间:2020-07-16 13:57:05

标签: java cucumber gherkin cucumber-java

我尝试按照此处的说明使用黄瓜表达式:https://cucumber.io/docs/cucumber/cucumber-expressions/

@Given("I connect to the {string} Database")
public void setDatabase(String databaseName) {
    String normalizedDatabaseName = databaseName.replaceAll("\\s", "") + "Database";
    DatabaseManager.setDatabaseConnection(normalizedDatabaseName);
    log.debug("Current Connection {}", normalizedDatabaseName);
}

当我执行一个调用此步骤的步骤时:

Given I connect to the Local Host MySQL Database

我收到一条消息,说没有任何步骤与上述步骤匹配,并获得了模板输出。

如果我改用以下RegEx,则代码有效:

@Given("^I connect to the (.*?) Database$")
public void setDatabase(String databaseName) {
    String normalizedDatabaseName = databaseName.replaceAll("\\s", "") + "Database";
    DatabaseManager.setDatabaseConnection(normalizedDatabaseName);
    log.debug("Current Connection {}", normalizedDatabaseName);
}

在第一个示例中我做错什么了吗,还是{string}不能处理空格?

3 个答案:

答案 0 :(得分:0)

请您尝试使用以下黄瓜表达格式,它与编程语言不同

enter image description here

答案 1 :(得分:0)

尝试在功能文件中编写的参数周围使用“”。 如果您可以在此处共享功能文件,也会更好。

答案 2 :(得分:0)

当您在 {} 中指定字符串(如 {string})时,您必须在特征文件中的变量周围加上引号

所以你的特征文件行应该是这样的

Given I connect to the "Local Host MySQL" Database

另一个工作的原因是你在那个时候使用的是正则表达式而不是黄瓜表达式,在正则表达式中,如果你有一个 .* 在括号里,它是一个匹配任何东西的捕获组

https://cucumber.io/docs/cucumber/cucumber-expressions/