当前位置: 首页 > 面试题库 >

毕竟全局钩黄瓜-jvm

江渊
2023-03-14
问题内容

我正在使用cucumber-jvm集成测试,并且在所有场景都完成后仅需要执行一次代码。

在仔细阅读了一些类似这样的帖子并审查了此报告的问题之后,我已经完成了以下操作:

public class ContextSteps {

   private static boolean initialized = false;

   @cucumber.api.java.Before
   public void setUp() throws Exception {
      if (!initialized) {
         // Init context. Run just once before first scenario starts

         Runtime.getRuntime().addShutdownHook(new Thread() {
            @Override
            public void run() {
              // End context. Run just once after all scenarios are finished
            }
         });

         initialized = true;
      }
   }
}

我认为BeforeAll以这种方式完成的上下文初始化(相当于)很好。但是,尽管它可以正常工作,但我不确定AfterAll使用模拟Runtime.getRuntime().addShutdownHook()是否是一种好的做法。

所以,这些是我的问题:

  • 我应该避免Runtime.getRuntime().addShutdownHook()执行AfterAll吗?
  • 还有其他更好的选择来模拟AfterAllcumber-jvm中的行为吗?

在此先感谢您的帮助。


问题答案:

可能更好的方法是使用构建工具(例如Ant,Maven或Gradle)进行设置和拆卸操作,这是 集成测试的 一部分。

使用Maven Fail Safe插件进行集成测试时。有一个阶段pre-integration- test,通常用于设置数据库和启动Web容器。然后运行集成测试(阶段integration-test)。然后post-integration- test运行该阶段,以关闭和关闭/移除/清理物品。

信息 如果通过JUnit运行Cucumber测试,则可能还需要考虑以下内容

如果它是更简单,更小的设置,则可以查看JUnit @BeforeClass和@AfterClass。或实现一个JUnit
@ClassRule,它具有自己的before()after()方法。

@ClassRule
public static ExternalResource resource = new ExternalResource() {
  @Override
  protected void before() throws Throwable {
    myServer.connect();
  }

  @Override
  protected void after() {
    myServer.disconnect();
  }
};


 类似资料:
  • 本文向大家介绍使用黄瓜有什么好处?,包括了使用黄瓜有什么好处?的使用技巧和注意事项,需要的朋友参考一下 下面列出了使用黄瓜的一些优点- Cucumber是一种开源工具,不需要许可。 黄瓜可以通过Eclipse等IDE轻松配置。 黄瓜弥合了开发人员,测试人员,业务分析师,客户和产品所有者之间的理解和沟通差距。 黄瓜使没有技术知识的业务利益相关者参与其中。 黄瓜提供纯文本表示形式,使团队中的非技术人员

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

  • 问题内容: 我有一个Cucumber Step类,我正在尝试为所有方案初始化页面模型。所以我添加了一个@Before注释方法: 然后,我有了一系列依赖于loginPage设置的步骤。例如 我有多个Step类。上面的两个方法都在同一Step类中。但是loginPage始终为null。永远不会调用beforeScenario方法。我是否完全误解了@Before是如何工作的?关于如何获得我想要的工作的任

  • 本文向大家介绍黄瓜中的胶水是什么意思?,包括了黄瓜中的胶水是什么意思?的使用技巧和注意事项,需要的朋友参考一下 胶水是Cucumber选项的一部分,它描述了步骤定义文件的位置和路径。 示例 测试运行器文件。

  • 问题内容: 我尝试使用Java和Maven构建我的第一个可执行文件规范。我创建了一个具有以下结构的简单项目: 在junit测试中,我有这个: 现在https://github.com/cucumber/cucumber-jvm/wiki/IDE- support 表示我应该添加以下行: 我试图将其修改为 但注释根本不可用。我有这个依赖: 我想念什么吗? 更新 我丢失了一些东西:该黄瓜功能文件必须位

  • 问题内容: 在对如何并行运行Cucumber测试用例进行了大量研究之后,我发现以下有关该主题的非常有用的文章: https://www.opencredo.com/2013/07/02/running-cucumber-jvm-tests-in- parallel/ 本文提供了一些很好的信息,可帮助您开始使用多线程环境,其中包括一些可以从Github下载的代码。 https://github.co