Espresso自動(dòng)化測(cè)試逾礁,創(chuàng)建項(xiàng)目時(shí)已導(dǎo)入相對(duì)應(yīng)的包莹汤。
-
打開sdk(
D:\java\androidstudio\sdk\tools
)中的tools文件夾下的uiautomatorviewer.bat,點(diǎn)擊下圖中紅色框中的內(nèi)容捕獲一幀畫面熄守。
-
Run->點(diǎn)擊Record Espresso Test,提示運(yùn)行安裝程序
-
點(diǎn)擊確定后出現(xiàn)如下界面
-
點(diǎn)擊上圖中的Add Assertion按鈕,配合uiautomatorviewer點(diǎn)擊控件增加斷言
-
選擇Save Assertion來保存斷言并退出此窗口
-
點(diǎn)擊Complete Recording按鈕芍锦,完成錄制。此時(shí)需要填寫一個(gè)測(cè)試的類名飞盆,然后點(diǎn)擊Save娄琉。
-
保存之后,就在androidTest目錄的包下生成一個(gè)測(cè)試類.
測(cè)試類代碼如下:
@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));
}
};
}
}
-
這時(shí)吓歇,在剛剛生成的測(cè)試類右鍵孽水,選擇Run 'MainActivityTest' 點(diǎn)擊運(yùn)行,此時(shí)代碼執(zhí)行的過程即是剛剛操作的步驟城看。