1)所有正在測試的設備/模擬器都禁用了動畫。片狀安卓咖啡測試 - 小吃店
2)我有一個@BeforeClass構建我的憑證對象。
3)我有一個IntenServiceIdlingResource和一個EventBusIdlingResource,註冊在@Before中。
4)當點擊登錄按鈕時,IntentService會關閉。在這種情況下,服務器(模擬服務器)返回500錯誤。該信息通過綠色機器人的EventBus從IntentService回發到UI,並顯示一個Snackbar和錯誤消息。
下面是測試代碼:
@Test
public void a_userNamePasswordTest() throws Exception {
// email input
ViewInteraction userNameView = onView(withId(R.id.email));
// verify it's on screen and enabled
userNameView.check(matches(isDisplayed())).check(matches(isEnabled()));
// set the username
userNameView.perform(scrollTo(), replaceText(credentials.username), closeSoftKeyboard());
// password input
ViewInteraction passwordView = onView(withId(R.id.password));
// verify it's on screen and enabled
passwordView.check(matches(isDisplayed())).check(matches(isEnabled()));
// set the password.
passwordView.perform(scrollTo(), replaceText(credentials.password), closeSoftKeyboard());
// sign in button
ViewInteraction signInButton = onView(withId(R.id.email_sign_in_button));
// verify the button
signInButton.check(matches(allOf(
isDisplayed(), isEnabled(), withText("Sign In"), withContentDescription("Sign In")
)));
// clickity click the button
signInButton.perform(scrollTo(), click());
// verify the snackbar text
onView(withText(startsWith("Server Error: 500"))).check(matches(isDisplayed()));
}
這是例外,我通常會得到:
SignInExceptionTest > a_userNamePasswordTest[Nexus_6P_API_23(AVD) - 6.0] FAILED android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with text: a string starting with "Server Error: 500"
根據我的記錄,我的空轉資源工作。但查看日誌的時間戳,異常發生在空閒資源閒置約5秒後。
似乎資源閒置時以及嘗試查找視圖之間存在延遲。
其他可能的相關細節:
- minSdk:20
- 編譯& targetSdk:25
- 編譯工具:25.0.2
- 支持庫:25.1.1
- 咖啡核:2.2.2
- gradle插件2.3.0-beta3
我該如何修復這個測試,使它不是片狀,除了膨脹多長時間我的小吃店顯示?
謝謝。 Espresso對IdlingResource的依賴正在推動着我的香蕉。沒有很好的理由將測試框架代碼投入到我的類中,而這正是應該如何正確完成的。 我仍然不能相信Espresso已經沒有這樣的東西了! –