代码之家  ›  专栏  ›  技术社区  ›  Andy

如何在cucumber套件之前/之后运行代码?

  •  0
  • Andy  · 技术社区  · 6 年前

    我在想如何在黄瓜测试运行之前和之后运行一些代码。

    几天来,我一直在跟踪一个bug,我们的一些进程在服务器上创建了作业,但没有正确地清理它。这很容易错过,所以理想情况下我不希望工程师必须手动添加检查到每个测试。

    我希望有一种方法可以在任何测试运行之前缓存一个钩子来缓存服务器上存在多少个作业,然后在最后一个钩子以确保值没有改变。

    我知道这不是最好的使用黄瓜的方法,因为这是一个系统测试类型的事情,但这样做将是最好的方法,以适应现有的基础设施。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Sami Farhat    6 年前

    用带标签的钩子怎么样。

    @Before("@jobCheck")
    public void beforeScenario() {
      // actions
    }
    
    @After("@jobCheck")
    public void afterScenario() {
      // actions
    }
    

    然后对于需要此检查的每个场景,在场景定义之前添加@jobcheck,如下所示。

    Feature: Some feature description
      @jobCheck
      Scenario: It should process a sentence
        // The steps
    

    关于jvm挂钩的更多信息,请参见: https://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/

        2
  •  0
  •   Himal    6 年前

    使用 @BeforeClass @AfterClass 运行文件中的批注。

    @RunWith(Cucumber.class)
    @Cucumber.Options(
        format = {"json", "<the report file>"},
        features = {"<the feature file>"},
        strict = false,
        glue = {"<package with steps classes>"})
    public class TestRunFile { 
        @BeforeClass
        public static void getJobNumbersOnServerBeforeStarting() {
            //Implement logic
        }
    
        @AfterClass
        public static void getJobNumbersOnServerAfterCompletion() {
            //Implement logic
        }
    }