簡體   English   中英

Android Espresso 測試錯誤活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM