我正在使用带有java的黄瓜来测试我的应用程序,
我想知道是否可以从第一个场景步骤中返回一个对象并在其他步骤中使用它。
以下是所需特征文件和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);
}
我宁愿不在班级中使用变量
(因为那时所有方法变量都在类级别)
但我不确定它是否可能。
是否可以在下一步中将方法中的返回值用作输入?
答案 0 :(得分:2)
在其他步骤中没有直接支持使用步骤方法的返回值。正如您所说,您可以通过实例变量实现状态共享,这适用于较小的示例。一旦您获得更多步骤并希望将它们重新组织成单独的类,您可能会遇到问题。
另一种方法是将状态封装到自己的类中,使用ThreadLocals
来管理它,你必须确保初始化或重置这个状态,也许使用钩子。
如果您使用像spring这样的依赖注入框架,则可以使用提供的场景范围。
@Component
@Scope("cucumber-glue")
public class SharedContext { ... }
然后可以将此上下文对象注入包含这些步骤的多个类中。