[英]Android Espresso test on wrong activity
我的應用程序上有兩個活動:登錄活動 (loginActivity) 和第二個活動 (mainActivity)。 我想用Espresso來測試loginActivity上的登錄,所以寫了這個測試:
public class LoginActivityTest extends ActivityInstrumentationTestCase2<LoginActivity> {
public LoginActivityTest() {
super(LoginActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
getActivity();
}
public void testLogin() throws Exception {
onView(withId(R.id.button_log_in)).perform(click());
onView(withId(R.id.container)).check(matches(isDisplayed()));
}
}
問題在於,當應用程序啟動時,如果用戶之前登錄過,loginActivity 會立即啟動 mainActivity,並且在執行測試時失敗並顯示錯誤:
android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: com.test.android.development:id/R.id.button_log_in
注意:如果我在運行測試之前啟動應用程序並注銷,錯誤就會消失。
提前致謝!
我明白你說的。 在 UI 測試中,我們有多個注釋。 我認為您應該使用@BeforeClass方法( @BeforeClass方法調用 Before onCreat方法)。 因此,在@BeforeClass方法中,使用數據庫填滿您的列表,然后刪除數據庫。 然后在@AfterClass方法中( @AfterClass方法調用 After onDestroy方法)。像以前的數據庫一樣創建新數據庫並在@BeforeClass方法中使用相同的 List。 希望對你有幫助。
僅當用戶先前未登錄時才使用if
進行測試。然后,您可以添加else
來也測試登錄狀態。
否則,您必須嘗試捕獲NoMatchingViewException來告訴您的應用程序在有登錄用戶的情況下不要執行登錄測試。 就像是:
try {
// your test code here
} catch (NoMatchingViewException e){
Log.d(TAG_LOG, "No login test performed!");
}
讓我知道這是否有幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.