Espresso Android 自動化測試

UI測試框架-Espresso實作及應用

陳依珊 2020/12/08 23:26:06
84

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執行自動測試

以下為自動測試影片

 

 

陳依珊