我正在使用带有 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/