gpt4 book ai didi

java - Cucumber Java - 如何在新步骤中使用步骤返回的参数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:05 26 4
gpt4 key购买 nike

我正在使用带有 java 的 cucumber 来测试我的应用程序,
我想知道是否可以获取从第一个场景步骤返回的对象并在其他步骤中使用它。以下是所需功能文件和 Java 代码的示例:

Scenario: create and check an object  
Given I create an object
When I am using this object(@from step one)
Then I check the object is ok


@Given("^I create an object$")
public myObj I_create_an_object() throws Throwable {
myObj newObj = new myObj();
return newObj;
}

@When("^I am using this object$")
public void I_am_using_this_object(myObj obj) throws Throwable {
doSomething(obj);
}

@Then("^I check the object is ok$")
public void I_check_the_object_is_ok() throws Throwable {
check(obj);
}

我宁愿不在类中使用变量
(因为那样所有方法变量都将在类级别)
但我不确定这是否可能。

是否可以使用方法中的返回值作为下一步的输入?

最佳答案

不直接支持在其他步骤中使用步骤方法的返回值。正如您所说,您可以通过实例变量实现状态共享,这适用于较小的示例。一旦您获得更多步骤并希望将它们重新组织到单独的类中,您可能会遇到问题。

另一种方法是将状态封装到它自己的类中,该类使用 ThreadLocals 管理它,您必须确保初始化或重置此状态,可能使用 Hook 。

如果您使用像 spring 这样的依赖注入(inject)框架,您可以使用提供的场景范围。

@Component
@Scope("cucumber-glue")
public class SharedContext { ... }

然后可以将该上下文对象注入(inject)到包含这些步骤的多个类中。

关于java - Cucumber Java - 如何在新步骤中使用步骤返回的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27647143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com