黄瓜钩控制流量?

时间:2017-06-05 13:43:02

标签: android-espresso cucumber-jvm

我正在尝试使用Espresso和Cucumber编写自动UI测试。到目前为止,我已成功执行使用ActivityTestRule测试单个活动的功能的步骤定义。我使用Cucumber的@Before注释来准备场景,例如启动所需的活动。问题在于,当我尝试执行包含多个功能定义的测试套件时,将在每个方案之前调用所有@Before块。例如,当检测核心开始执行方案1时,它会在方案1和方案2中执行@Before方法,从而导致重叠活动启动和测试失败。

public class Activity1Stepdefs {

    @Before
    public void setUp() {
        // Called before both scenario 1 and scenario 2, needs to be called only before scenario 1. 
    }

    @Given("^scenario 1$")
    public void scenario_1() throws Throwable {
        // Scenario 1
    }
}

public class Activity2Stepdefs {

    @Before
    public void setUp() {
        // Called before both scenario 1 and scenario 2, needs to be called only before scenario 2. 
    }

    @Given("^scenario 2$")
    public void scenario_2() throws Throwable {
        // Scenario 2
    }
}

产生的控制流程:

  1. Activity1Stepdefs.setUp()
  2. Activity2Stepdefs.setUp()
  3. Activity1Stepdefs.scenario_1()
  4. Activity2Stepdefs.setUp()
  5. Activity1Stepdefs.setUp()
  6. Activity2Stepdefs.scenario_2
  7. 所需的控制流程:

    1. Activity1Stepdefs.setUp()
    2. Activity1Stepdefs.scenario_1()
    3. Activity2Stepdefs.setUp()
    4. Activity2Stepdefs.scenario_2

1 个答案:

答案 0 :(得分:1)

这可以通过标记的钩子来实现。首先在特征文件中为方案1和2分配标记,然后创建标记的钩子,如下所示。 假设我已经将方案1和2的标签名称分别命名为scen1和scen2。  before ("@scen1") public void scenarioOneSetup() { // code for scenario 1 setup } before ("@scen2") public void scenarioTwoSetup() {// code for scenario 2 setup}