【问题标题】:How to use result returned from before or background scenarios in cucumber java testing?如何在黄瓜 java 测试中使用之前或后台场景返回的结果?
【发布时间】:2018-01-05 01:35:35
【问题描述】:

我有两个名为“X”和“Y”的场景(许多其他场景) 在测试场景“Y”之前,我需要运行场景“X”并将结果从场景“X”返回到场景“Y”。我该怎么做?

我尝试了 2 个选项 1:我已经为 X 创建了背景场景,但我无法将该背景场景 X 的结果返回到场景 Y。 2:我也试过使用 before hook up annotation。

(PS:我知道在测试所有测试用例时应该相互独立)

【问题讨论】:

    标签: cucumber-jvm cucumber-java


    【解决方案1】:

    也许最简单的方法是将两个步骤放在同一个类中,然后使用类实例变量。

    public class SomeSteps {
      private List<String> betweenStepsList;
    
      @When("^I initialize a list in one step$") 
      public void iInitializeAListInOneStep() {
        betweenStepsList = new ArrayList<String>(Arrays.asList("Peter","Piper","picked","a","peck","of","pickled","peppers"));
      }
    
      @Then("^I can access that list in a following step$") 
      public void iCanAccessThatListInAFollowingStep() {
        System.out.println("Elements are:" + betweenStepsList);
      }
    }
    

    编辑 你确实说了两种情况。当我面对这个问题时,我总能找到一种方法将场景组合成一个。

    您可以在第一个场景中将中间结果写入文件,然后在第二个场景中读取它们。我自己从不费心去做,但是有很多关于如何读写文件的教程。这是用于 Java 的 one。 Ruby 或 Python(您没有指定)编写然后读取文件的示例也很容易获得。

    只要两个场景在同一个功能文件中,并行执行就可以了。

    【讨论】:

    • 这行不通。在每个场景之间重新创建步骤实例类。但是,在后台场景中使用第一步时它会起作用。
    • 没错。将场景合二为一在我的方法中是如此根深蒂固,以至于我没有说明它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多