java - 在 Cucumber 步骤运行时将关键字解析为其值

标签 java cucumber-jvm

当我在搜索文本字段中输入名称 foo_SCENARIO_UUID 时

实现:

@When("^I enter the name "([^"]*)" in serach text field$")
public void i_enter_someText_in_search_textField(String searckKey) throws Throwable {
    pageCollection.searchPage().enterKeyword(searchKey);
}

我的问题是如何将我的功能中使用“SCENARIO_UUID”的位置设置为 System.currentTimeMillis() 的值。

我是否可以重写 Cucumberoptions 解析为这些值,而不是在每个步骤实现中编写逻辑。

我们在 Jbehave 中有此选项

@Override
public Configuration configuration() {
    if (config != null)
        return config;

    config = useParameterConverters(new ParameterConverters()
                                   .addConverters(new StringConverter()));

我在 Cucumber 中找不到任何此类选项来确保每次运行测试时它都会搜索新字符串:(

最佳答案

public static class Scenario_Uuid_transform extends Transformer<String> {

    @Override
    public String transform(String aString) {
        if (aString.endsWith("_SCENARIO_UUID")) {
            return Long.toString(System.currentTimeMillis());
            // Or if you wanted foo_ prepended
            // return aString.replaceFirst("SCENARIO_UUID", Long.toString(System.currentTimeMillis()));
        else {
            return aString;
        }
    }
}


@When("^I enter the name "([^"]*)" in serach text field$")
public void i_enter_someText_in_search_textField(@Transform(Scenario_Uuid_transform.class) String searckKey) throws Throwable {
    pageCollection.searchPage().enterKeyword(searchKey);
}

参见Class Transformer以获得解释。

关于java - 在 Cucumber 步骤运行时将关键字解析为其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39707615/

相关文章:

java - 抑制 Cucumber 报告中的 Java 异常堆栈跟踪

java - 使用 Cucumber(和/或 Citrus)执行异步步骤

java - 为什么使用 BufferedInputStream 逐字节读取文件比使用 FileInputStream 快?

java - Java 中的基本对话框

Java SHA512 摘要输出不同于 PHP 脚本

java - 使用 pickling 将 json 对象数组解析为 scala 对象

java - 为什么每当我在父类 - Android 中触发一个操作时,我的子类方法总是被调用?

java - cucumber (Java)和 Selenium : where to place driver path using setProperty?

android - 谁在为 Android Studio 中的测试报告生成 coverage.ec?

java - 防止在 @After 之后关闭浏览器