错误活动的Android Espresso测试

时间:2015-02-11 11:00:35

标签: android android-espresso android-instrumentation

我的应用程序上有两个活动:登录活动(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

注意:如果我在运行测试之前启动应用程序并注销,错误就会消失。

提前致谢!

1 个答案:

答案 0 :(得分:-1)

仅当用户以前没有登录时,才使用if执行测试。 然后,您可以添加else以测试记录的状态。

否则,您必须尝试捕获NoMatchingViewException以告知您的应用程序在登录用户的情况下不执行登录测试。类似的东西:

try {
     // your test code here
  } catch (NoMatchingViewException e){
    Log.d(TAG_LOG, "No login test performed!");
  }

如果这有任何帮助,请告诉我。)