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