java - cucumber-jvm 的全局 BeforeAll Hook ?

标签 java cucumber cucumber-jvm

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/

相关文章:

java - Java 中的 strcpy 是什么?

cucumber - [31m失败场景 :[0m Console message

android - 如何为 Android 和 iOS 使用相同的 Cucumber 步骤定义

intellij-idea - 配置 IntelliJ 以运行 Groovy Cucumber Geb 框架

java - android fragment 的最佳实践?

java - 将变量传递给方法以添加到通用数组列表 - Java

javascript - 如何在不同页面上单击具有多个不同属性的同名按钮?

java - Cucumber-jvm线程安全吗?

java - 我可以在 cucumber 测试中使用 Spring 自动连接 Controller 吗?

java - 我们可以将avro文件写入动态创建的GCS存储桶(基于tenantID)吗?