如何在 Cucumber Java 的步骤之间传递变量值?

2023-11-24

我有一个变量,我想在所有步骤中传递该变量。 任何人都可以使用代码片段示例来建议如何在步骤之间传递变量值。 任何帮助将不胜感激。


在 Cucumber for Java (cucumber-jvm) 中,在步骤之间共享数据的预期方式是使用依赖项集成 (DI) 容器 - 其中几个容器已与 Cucumber 集成。

使用 DI 的方法因容器而异,但以下是使用 PicoContainer 的示例:

// MySharedData.java
public class MySharedData {
    public String stringData;
}

// SomeStepDefs.java
public class SomeStepDefs {
    private MySharedData sharedData;

    public SomeStepDefs(MySharedData sharedData) {
        this.sharedData = sharedData;
    }

    // StepDefs omitted
}

// MoreStepDefs.java
public class MoreStepDefs {
    private MySharedData sharedData;

    public MoreStepDefs(MySharedData sharedData) {
        this.sharedData = sharedData;
    }

    // StepDefs omitted
}

DI 容器将确保单实例MySharedData 的创建目的是each场景并传递给every需要它的步骤定义类。这种方法的好处是 Cucumber 确保场景之间不会发生共享状态泄漏,因为注入的依赖项是为每个场景重新创建的。

上面的示例使用构造函数注入(因此注入的依赖项由构造函数参数指定),但其他 DI 容器也支持其他注入机制,例如 Spring 的@Autowired.

要让 Cucumber 使用 DI,您需要选择一个(且只有一个)DI 集成,并将其包含在您的类路径中(或 POM 中)。选择是:

  • PicoContainer(黄瓜-picocontainer.jar)
  • Guice(黄瓜-guice.jar)
  • 焊接(黄瓜焊接.jar)
  • 春天(黄瓜-spring.jar)
  • OpenEJB(黄瓜-openejb.jar)

您还需要安装所选的 DI 容器本身,因为 Cucumber jar 只提供 Cucumber 和 DI 容器之间的集成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Cucumber Java 的步骤之间传递变量值? 的相关文章

随机推荐

  • 如何重置字典中的所有值

    green 0 y3 1 m tt 0 newaccount 0 egg 0 results 0 dan 0 Lewis 0 NewAccount2 0 testyear3 1 testyear6 0 NewAccount1 0 testy
  • 如何设置TextInputLayout错误消息颜色?

    如何更改可设置为显示在文本字段下方的错误消息的颜色TextInputLayout via setError 在这里查看错误状态 它通常显示为红色 我想改变它 我应该在我的项目中使用哪些项目名称 键styles xml文件来定位颜色 Edit
  • 使用 Jenkins 从机器 B 运行机器 A 的构建

    我有 2 台电脑 Com A Com B 我在 Com A 上使用 selenium webdriver Testng 和 maven 构建自动化功能脚本 Com A 已经安装了 Jenkins 的所有内容 但 Com B 只有 jenki
  • 避免 WordPress 插件上的 jquery 冲突的防弹方法

    我开发 WordPress 插件已经有一段时间了 我的所有插件似乎总是遇到以下问题 Jquery 冲突问题 我尝试了很多不同的方法来避免这些问题 但我总是让用户联系我说 当他们安装了我的一个插件时 它已经阻止了另一个插件的工作aahhhhh
  • 使用 swift 在图像上覆盖文本

    我正在尝试使用 Swift 在图像上覆盖一些文本 并在此处查看此代码 src 如何在 iOS Swift 中向图像添加文本 这会将文本置于正中央 我一直在改变价值观 var rect CGRectMake 10 150 inImage si
  • 如何获取android中停止服务的意图

    我在用stopService 停止服务 我想发送额外的数据意图 如何在服务中检索这些额外数据 据我所知 这个Intent未交付至Service以任何方式 代替stopService 您可以使用startService 传递您的额外内容 并在
  • 将新节点添加到现有 XmlDocument 对象

    我有一个以下格式的 xml
  • 玩!框架 - 视图未编译?

    我创建了一个新项目并使用 eclipse 使用eclipsify命令 基本上 我移动了app目录从旧项目到我创建的新项目 问题是 eclipse 无法识别这些视图 我收到如下错误 views html viewTopic 无法解析为类型 我
  • 反序列化期间未知元素将被忽略

    当我使用 XmlTextReader 反序列化 XML 文档时 没有相应类的文本元素将被简单地忽略 Note 这是not关于 XML 中缺少的元素 这些元素需要存在 而是存在于 XML 文本中 而在代码中没有等效属性 我本希望得到一个异常
  • 如何将日期时间格式设置为 24 小时时间?

    我需要日期时间中的字符串来以 24 小时格式显示时间 var curr DateTime Now string s Console WriteLine s 输出结果必须是 16 38 谢谢 使用大写HH对于 24 小时格式 String s
  • python合并两个列表(偶数/奇数元素)

    给定两个列表 我想合并它们 以便第一个列表中的所有元素都是偶数索引 保留它们的顺序 第二个列表中的所有元素都是奇数索引 也保留它们的顺序 下面的例子 x 0 1 2 y 3 4 result 0 3 1 4 2 我可以使用 for 循环来做
  • Laravel 没有数据库连接

    有没有一种方法可以在没有数据库连接的情况下使用 Laravel 我计划使用 Blade 和 VueJS 创建一个前端网站 该网站将使用第三方 API 并且不需要数据库 目前 我收到此错误 但不知道如何绕过它 Database name se
  • 可以全屏打开程序的应用程序?

    我需要制作一个在全屏模式下启动新程序 例如记事本 的应用程序 我可以在 c 中做到这一点吗 我希望有一个代码示例 谢谢 您可以使用Process Start with a ProcessStartInfo对象有一个WindowStyle财产
  • 如何指定库路径的首选项?

    我正在使用以下命令编译 C 程序g and ld 我有一个 so我想在链接期间使用的库 然而 同名的库存在于 usr local lib and ld正在选择该库而不是我直接指定的库 我怎样才能解决这个问题 对于下面的示例 我的库文件是 m
  • 如何让 Jersey 对响应消息正文使用 GZip 压缩

    我正在尝试编写一个简单的 Jersey 应用程序 它将文件从 Jersey 客户端发送到 Jersey 服务器并返回 但是 这些文件似乎仅在从客户端到服务器的途中进行编码 而不是在其他方式上进行编码 我想知道如何改变这种行为 我正在一个简单
  • 如何将docker容器中的目录挂载到主机上?

    在 docker 容器中挂载主机目录非常容易 但我需要相反的方式 我使用 docker 容器作为开发 WordPress 插件的开发环境 这个 docker 容器包含运行 WordPress 所需的一切 MySQL Apache PHP 和
  • 将数组值转换为对象键

    我做了一个 get 返回一个 json 对象 如下所示 data 2016 Pass Fail Rates by Test Centre Passes No ID Fails Fail Dangerous Total Sometown 8
  • 使用超类类型作为子类实例

    我知道这个问题已经被问了很多次 但在我看来 通常的答案远不能令人满意 给定以下类层次结构 class SuperClass class SubClass extends SuperClass 为什么人们使用这种模式来实例化子类 SuperC
  • android studio设置java版本1.7

    我正在尝试将 java 版本 1 7 与 android studio 一起使用 但不幸的是它无法正常工作 如果将版本设置为File gt Other settings gt Default project structure to Pro
  • 如何在 Cucumber Java 的步骤之间传递变量值?

    我有一个变量 我想在所有步骤中传递该变量 任何人都可以使用代码片段示例来建议如何在步骤之间传递变量值 任何帮助将不胜感激 在 Cucumber for Java cucumber jvm 中 在步骤之间共享数据的预期方式是使用依赖项集成 D