0
我正在尝试使用Espresso和黄瓜编写自动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
}
}
所得控制流程:
Activity1Stepdefs.setUp()
Activity2Stepdefs.setUp()
Activity1Stepdefs.scenario_1()
Activity2Stepdefs.setUp()
Activity1Stepdefs.setUp()
Activity2Stepdefs.scenario_2
期望的控制流量:
Activity1Stepdefs.setUp()
Activity1Stepdefs.scenario_1()
Activity2Stepdefs.setUp()
Activity2Stepdefs.scenario_2
这是hook之前的正常行为。如果你想在钩子之前使用不同的。然后在场景之前将其转换为步骤定义,并将其作为特性文件中的故事线添加到场景中。如果你想要不同的行为,不要在场景之前使用。 – Murthi
但我不断看到人们在'@ Before'钩子中启动活动的示例,如下所示:https://stackoverflow.com/a/36012553/5963217所以我想我的问题是:什么是准备用户界面的正确位置那么测试呢?我真的不希望我的功能被设置逻辑污染。 – Julsteri