当前位置: 首页 > 知识库问答 >
问题:

Serenity BDD中的全局挂钩

宿文栋
2023-03-14

我试图在<code>serenity bdd<code>项目中实现全局钩子。当我浏览下面的链接时,发现其中没有一个对我有用。其中一些并不是Serenity BDD特有的。

package mypackage;

import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import net.serenitybdd.cucumber.CucumberWithSerenity;

@RunWith(CucumberWithSerenity.class)
@CucumberOptions(
        features = "src/test/resources/features",
        glue = {"MyProj.cucumber.stepdefinition"},
public class MyTest {

         @Before
         public static void setUp() {
                 //do something here
         }

}

解决方案1

解决方案2

我的Maven版本是:

共有1个答案

伍昱
2023-03-14

我不确定在测试执行之前,我是否抓住了您的目的以及您想做什么。由于您使用Serenity框架,我建议您查看StepListener的实现。它使用Java SPI。也许它会对你的任务有用。

简而言之:

Serenity具有类StepEventBus,它具有在测试执行之前从类路径加载服务实现的逻辑。您只需实现自定义StepListener和override方法。之后,您将能够在不同的运行阶段(功能启动、测试启动、步骤启动等)运行代码和平

 类似资料:
  • 我正在用vue3 开发一个大屏项目,大屏背景是unity开发的,我需要和背景进行交互,例如场景切换、互发消息传递数据等,因为多个页面都是使用同一个背景组件,我不希望切换页面时重新加载Unity,所以Unity全局公共加载。 我希望能在每个页面能够获取到Unity组件的Ref,通过Ref调用Unity组件中的发送消息、切换场景的事件,有什么思路? 我现在在考虑能不能将UnityRef挂载到全局去使用

  • 问题内容: 我以为我了解了Java中局部变量和全局变量之间的区别,直到今天看到一个示例。在这段代码中,我们尝试将元素添加到方法的链接列表中: 我不明白的是,为什么在关闭方法后newElement不会消失?因为这是局部变量,并且未在任何地方的类中定义。这是此类的完整代码: } 先感谢您 问题答案: 这是 变量 和 对象的 混合,确实是局部变量,在方法结束后会丢失,但是引用指向一个 对象 。如果没有引

  • 本文向大家介绍Lua中的全局变量、非全局变量总结,包括了Lua中的全局变量、非全局变量总结的使用技巧和注意事项,需要的朋友参考一下 前言 Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”。这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现;另一个优点是,可以像其他table一样操作这个table。为了便于实施这种操作,L

  • 问题内容: 如何在Java中定义全局变量? 问题答案: 要定义全局变量,你可以使用静态关键字 现在你可以通过调用从任何地方访问a和b

  • 我想使用大小为2的FIFO队列来存储数据流的元素。在任何情况下,我都需要流中的前一个元素,而不是当前元素。为此,我在流代码之外创建了一个队列,并将当前元素加入队列。当我的队列有两个元素时,我将其出列并使用第一个元素。 我面临的问题是,我不能加入队列,因为它是在我的流代码之外声明的。我想这是因为流使用多个JVM,我的队列将在一个JVM中声明。 下面是一个示例代码: 在这里,没有任何东西进入队列,队列

  • 问题内容: 假设我想创建一个sql脚本并执行以下操作: 我不能,因为@SomeVariable与他所属的批次一起死亡,而myProcedure需要它自己的批次。显然,我可以创建一个#temp表并在其中填充所需的任何值,但随后我必须从中选择- 添加代码,尽管琐碎,但会损害可读性,并且当我需要的只是一个全局变量时似乎很愚蠢。有没有更好的办法? 要痛苦地清除。我知道SQL Server具有称为“表”的“