Espresso 自動化測試,建立項目時已導入相對應的包。
- 打開sdk(
)中的tools檔案夾下的uiautomatorviewer.bat,點選下圖中紅色框中的内容捕獲一幀畫面。 圖1.pngD:\java\androidstudio\sdk\tools
- Run->點選Record Espresso Test,提示運作安裝程式 圖2.png
- 點選确定後出現如下界面 圖3.png
- 點選上圖中的Add Assertion按鈕,配合uiautomatorviewer點選控件增加斷言 圖4.png
- 選擇Save Assertion來儲存斷言并退出此視窗 圖5.png
- 點選Complete Recording按鈕,完成錄制。此時需要填寫一個測試的類名,然後點選Save。 圖6.png
- 儲存之後,就在androidTest目錄的包下生成一個測試類. 圖7.png
測試類代碼如下:
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void mainActivityTest() {
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.btn_open), withText("open"),
withParent(allOf(withId(R.id.activity_main),
withParent(withId(android.R.id.content)))),
isDisplayed()));
appCompatButton.perform(click());
ViewInteraction textView = onView(
allOf(withText("登入成功"),
childAtPosition(
allOf(withId(R.id.activity_login),
childAtPosition(
withId(android.R.id.content),
0)),
0),
isDisplayed()));
textView.check(matches(withText("登入成功")));
}
private static Matcher<View> childAtPosition(
final Matcher<View> parentMatcher, final int position) {
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("Child at position " + position + " in parent ");
parentMatcher.describeTo(description);
}
@Override
public boolean matchesSafely(View view) {
ViewParent parent = view.getParent();
return parent instanceof ViewGroup && parentMatcher.matches(parent)
&& view.equals(((ViewGroup) parent).getChildAt(position));
}
};
}
}
- 這時,在剛剛生成的測試類右鍵,選擇Run 'MainActivityTest' 點選運作,此時代碼執行的過程即是剛剛操作的步驟。 圖8.png