UI測試框架-Espresso實作及應用
1.環境設定
先在build.gralde內添加相關指令後,gradle將會進行SDK的下載及更新。
2.新增測試案例
先建立layout
[Layout] activity_main
[Layout] second_layout
接著找到ExampleInstrumentedTest後,可以開始新增測試。
須在class的開頭加上測試類別@RunWith,通常用@RunWith(AndroidJUnit4.class)
在對應的activity上面需加上@Rule,指在@test前就會先啟動。
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Rule
public ActivityScenarioRule <MainActivity> activityRule
= new ActivityScenarioRule <>(MainActivity.class);
測試分三個部分:
onView(ViewMatcher):在畫面要控制的元件。
.perform(ViewAction):針對控制的元件要執行指定的行為,例如點擊。
.check(ViewAssertion):執行後進行驗證測試結果。
以下利用上面三個部分進行@Test
@Test
public void activityLaunch() {
onView(withId(R.id.keyIn)).perform(typeText("Espresso"));
closeSoftKeyboard();
onView(withId(R.id.btnSubmit)).perform(click());
onView(withId(R.id.btnBack)).check(matches(isDisplayed()));
onView(withId(R.id.btnBack)).perform(click());
onView(withId(R.id.btnSubmit)).check(matches(isDisplayed()));
}
ViewMatcher->(withId()):指在view上用id找到元件,進行控制。如果不要用id,要用text找,就把withId換成withText(...),意指找到相關的Text後進行指定的行為。
ViewAction->(click()):執行點擊的動作。也可以換成doubleClick、longClick...等其他方式。
ViewAssertion->(matches(isDisplayed)):驗證元件是否有顯示。也可以把括號裡的isDisplayed換成isEnabled、isClickable......等其他驗證方式。但括號前面一定要有matches包在外面才可以,因為matches會把viewMatchers變成viewAssertion。
第三行:在第一頁找到keyIn輸入框,執行輸入文字"Espresso"。typeText()也可以換成clearText(),變成清空文字,如果元件原本已有文字存在 的話就可清空 。
第四行:關閉鍵盤。如果是有輸入文字就需要關閉鍵盤。
第五行:在view找到btnSubmit確認鈕後,執行點擊的動作。點擊後會跳轉到第二頁。
第六行:此時已跳轉到第二頁了,會驗證是否有第二頁的元件 btnBack,沒有的話會回傳error。
第七行:在第二頁找到btnBack返回鈕後,執行點擊。點擊後會回到第一頁。
第八行:此時已跳轉回第一頁了,會驗證是否有第一頁的元件btnSubmit,沒有的話會回傳error。
接著按右鍵點擊Run執行自動測試
以下為自動測試影片