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

标签 java testing cucumber return-value

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

相关文章:

testing - 如何在测试上下文中使用 LocalizationUtility

android - 测试混合 Android 应用程序(获取 WebView 组件)

testing - 测试.QuickCheck : speed up testing multiple properties for the same type

java - 如何将保存的图像添加到媒体存储并生成缩略图?

java - 利用 NetBeans GUI 构建器设计的面板?

java - 输出在 Mac 上正确,但在 Windows 上不正确

java - Selenium Cucumber 强制终止运行

ruby - 使用 Watir 保存屏幕截图时,png 为空或 0kb

reactjs - React 与 cucumberjs 集成

java - 如何创建 Maven 可分发