Cucumber:不允许扩展定义步骤定义或挂钩的类

2023-12-01

我从别人那里继承了一个大的测试项目,主要的Java类是CommonSteps、CommonBase和CommonScript。它们目前是这样关联的:

CommonSteps 扩展了 CommonBase

CommonBase 扩展了 CommonScript

当我尝试运行项目时,问题出在下一个方法上mvn clean install:

@After
public void tearDown(Scenario scenario) {
  if (scenario.isFailed()) {
    // Take a screenshot...
    final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
    scenario.embed(screenshot, "image/png"); // ... and embed it in the report.
  }
}

我收到错误:

cucumber.runtime.CucumberException:不允许您扩展定义步骤定义或挂钩的类:steps.CommonSteps 扩展了类 common.CommonBase。

我如何开始使用依赖注入来删除与继承相关的所有内容?


Cucumber 在每个场景之前创建定义 stepdef 的所有类的新实例。 然后它调用stepdef方法one每当需要运行步骤时就会调用这些实例。

如果您在类 A 中定义了一个 stepdef 方法 foo 并且您有一个类 B 扩展了 A,您将获得 a 和 b 实例。 foo 方法在两个实例上都可用,并且 Cucumber 将无法决定在哪个实例上调用该方法。

这就是为什么我们不允许这样做。

解决方案是使用组合而不是继承。您可以通过依赖注入实现组合 - Cucumber 支持多种流行的 DI 框架。

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

Cucumber:不允许扩展定义步骤定义或挂钩的类 的相关文章

随机推荐

  • 减去 Pandas 中两个不平衡的 DataFrame

    我有两个不平衡的 DataFrame 并且想通过减去值来创建第三个 DataFrame 以获得它们之间的增量 这是三个数据框的示例 我想用当前值减去相应的预期值来得到 DELTA 这按预期工作 当 CURRENT 和 EXPECTED 中的
  • 使用 c# 或批处理自动使用 winrar 提取 ISO

    我正在尝试将 ISO 提取到具有相同名称但末尾没有 iso 的文件夹中 我在使用 winrar 时遇到问题 因为当我从包含 ISO 的文件夹中开始搜索时 它不会启动提取 已更新答案代码 private void ExtractISO str
  • ajax - 新选项卡中的 pdf

    我正在使用 Laravel 我在 post 方法后得到一个 PDF 并使用 Ajax 发出此请求 成功后如何在新选项卡中显示此 PDF 当我不使用 Ajax 运行代码时 它可以工作 但是当我想用 Ajax 运行它时 我不知道如何在新选项卡中
  • Excel如何在不使用VBA的情况下从逗号分隔列表中查找匹配元素的所有行

    这是我的问题 我有一个包含两列的表 产品参考和相应的通知 ID A B C D 1 Product Notice 2 p1 n1 3 p2 n2 4 p3 n3 5 6 p1 p3 edi
  • 是否可以在 java Manifest 文件中包含 SHA1-Digest 而无需实际使用密钥

    目前我们使用 jarsigner 来签署我们的 jar 然后 我们显示某些特定类的一些 SHA1 Digest 值 以向外部审计员证明代码在版本之间没有更改 我们只依靠META INF xxx SF文件来获取摘要信息 我们从不使用META
  • ANSI 转义序列不会打印到 Windows 上的标准输出

    我正在尝试在 Windows 上使用 node js 将 ANSI 转义序列写入 stdout 但它似乎不起作用 具体来说 我使用ConEmu这确实supportANSI 代码的子集 我创建了一个测试文件 该文件应重命名当前控制台选项卡 p
  • jQuery:如何确定div是否向下滚动

    我有一个具有定义高度的 div 并且overflow scroll 它的内容太长 因此出现滚动条 现在是发痒的部分 它的一些内部 HTML 总是奇怪地出现 准确地说 是 tableFilter 插件生成的表格的页脚 我想让这个页脚在不需要时
  • 从特定行开始读取目录中的多个文件

    我正在尝试从工作目录读取 R 中的多个文件 并且想从每个文件的第 7 行读取 我不知道我该怎么做 我发现如何用这个读取单个文件 data read csv file choose skip 6 或者我可以像这样读取多个文件 j list f
  • 使用 VBA 从文件中提取 XML 值

    请相信我 我really已经用谷歌搜索过 但我是使用 VBA 的 XML 新手 我见过的所有示例都使用我所说的 简单 XML 而我的示例 对我来说 似乎更复杂 首先 这是我的 XML 的简单摘录 如果我能设法用块引号附加它
  • 从 PowerShell 执行外部命令不接受参数

    我正在执行以下代码 尝试执行 7z exe 命令来解压缩文件 dir 包含用户输入的 zip 文件路径can当然包含空格 下面的 dir temp2 是我之前创建的目录 Get ChildItem path dir Filter zip F
  • 在 requirejs 模块 javascript 中调用函数内部的函数

    大家好 这可能吗 在 requirejs 模块内的函数内调用函数 TIA define common function Common return func1 function return this is function 1 func2
  • 另一个排列词难题......使用 Linq?

    我见过很多获取给定字母集的所有排列的例子 递归似乎可以很好地获得一组字母的所有可能组合 尽管它似乎没有考虑其中两个字母是否相同 我想知道的是 您是否可以使用 linq 或不使用 将所有可能的字母组合减少到 3 个字母组合 例如 给定字母 P
  • 更新/编辑 localStorage - JSONObject

    是否可以编辑存储在 Web 本地存储上的 JSON 对象 目前我有一个字符串化的 JSON 对象 fname Jerry lname Lewis email email protected password 使用该功能 localStora
  • 将 pdf 页面添加到现有 pdf Objective-c

    我正在为 iphone ipad 编写一个应用程序 将相机图像 png 转换为 pdf 并保存到 user documents 文件夹 现在我试图弄清楚如何将另一个 pdf 附加到现有文档中 这样它们就会变成多页 基本上 如果您将 doc1
  • TJSON.JsonToObject 不通过 setter

    将 Json 字符串转换为我自己的对象时遇到一些问题 我举一些例子 我的课 TClasse class private Fid integer Fnome string procedure Setid const Value integer
  • 如何扩展顶级QTreeview项目

    我不明白为什么这似乎没有扩展 QTreeView 中的顶级根项目 clear existing treeview data model self treeview model sourceModel model clear add tree
  • Android:由同一意图启动多个活动实例。将一个独特的元素带到前台?

    我正在努力开发启动多个实例的应用程序 使用相同意图的相同活动 我的主要活动是课堂类型 A 它对两个相同的子项执行 startActivity B类 所以我们推出了B1和B2 如果 B1 和 B2 都是 暂停 通过按后退按钮并确保未调用 fi
  • Google 运算符的正则表达式

    使用 PHP 我试图通过支持类似 Google 的运算符 例如 关键字 自然 默认 关键字 或 搜索短语 完全匹配 关键字 部分匹配 为此 我需要将字符串拆分为两个数组 一种将确切的单词 但没有双引号 放入 Array1 中 并将其他所有内
  • 合并两个 XElement

    我不太确定如何问这个问题 或者这是否存在 但我需要合并两个 XElement 其中一个优先于另一个 以成为一个元素 这里首选 VB NET 和 Linq 但任何语言如果能够演示如何执行此操作 而无需我编写代码来手动分离和解析每个元素和属性
  • Cucumber:不允许扩展定义步骤定义或挂钩的类

    我从别人那里继承了一个大的测试项目 主要的Java类是CommonSteps CommonBase和CommonScript 它们目前是这样关联的 CommonSteps 扩展了 CommonBase CommonBase 扩展了 Comm