gpt4 book ai didi

java - cucumber-jvm 的全局 BeforeAll Hook ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:41 24 4
gpt4 key购买 nike

cucumber 的 ruby​​ 版本支持全局 before hook。放置在 features/support 目录中的 *.rb 文件显然只被调用一次,在任何和所有场景运行之前。参见 https://github.com/cucumber/cucumber/wiki/Hooks#global-hooks

这似乎是确保数据库(在测试期间以只读方式使用)在任何测试运行之前被填充(因此处于已知状态)的好方法。

Cucumber 的 Java 版本是否有类似的功能?

最佳答案

Cucumber JVM 本身没有这样的功能(请参阅 https://github.com/cucumber/cucumber-jvm/issues/515)。

但是,有一些解决方法:

  • 使用测试框架的 Hook :
    • @BeforeAll@AfterAll 用于 JUnit 5,
    • @BeforeClass@AfterClass 用于 JUnit 4
  • 使用 Cucumber Before Hook 进行惰性单例初始化,并使用 JVM 关闭 Hook 进行拆卸
  • 实现 Cucumber EventListener 并订阅 TestRunStartedTestRunFinished 事件
  • 使用构建框架的集成测试生命周期功能,例如Maven 的pre-integration-testintegration-testpost-integration-test 阶段和maven-failsafe-plugin.

您还必须解决将此类设置步骤的结果(例如随机端口号)注入(inject)测试的问题。

我写了一篇博客文章来涵盖所有细节:https://metamorphant.de/blog/posts/2020-03-10-beforeall-afterall-cucumber-jvm-junit/

关于java - cucumber-jvm 的全局 BeforeAll Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19770103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com