我怎么知道是否显示一个片段(测试用户界面)

时间:2016-09-29 16:51:29

标签: android testing functional-testing

如果我的一个碎片,棘手的碎片,我必须执行点击。 如果没有,请采取其他行动。

我怎么知道这是我屏幕上的片段?

Android UI测试。 在我的代码下面进行测试 编辑 代码:

   @Rule
    public ActivityTestRule mActivityRule = new ActivityTestRule<>(MainActivity.class);

    @After
    public void setUp(){
        Logout();
    }  
  @Test
    public void shouldOfferRide(){
        SystemClock.sleep(1500);
        Login();
        onView(withId(R.id.searchButton)).perform(typeText(emailSearch));
        onView(withId(R.id.searchButton)).perform(pressImeActionButton());
        onView(withId(R.id.community_user_ask_button)).perform(click());
        SystemClock.sleep(1500);
        onView(withId(R.id.button1)).perform(click());
        onView(withId(R.id.send_request)).perform(click());
        SystemClock.sleep(1500);
        ((MainActivity)mActivityRule.getActivity()).navItemClick(4);
        SystemClock.sleep(3500);
        LoginMyrides();
        onView(withId(R.id.my_rides_tab_bar)).perform(click());
        SystemClock.sleep(1000);

        {I have to know is ratingfragment before perform click below}

        onView(withId(R.id.rating_bar)).perform(click());
        onView(withId(R.id.deny_btn)).perform(click());
    }

        public void Login(){
        onView(withId(R.id.edt_new_login_email)).perform(typeText(emailLogin));
        onView(withText(R.string.next_button)).perform(click());
        onView(withId(R.id.edt_new_password)).perform(typeText(senha));
        onView(withText(R.string.login_new_pass)).perform(click());
    }

    public void Logout(){
        new SessionManager(mActivityRule.getActivity()).logoutUser();
    }
}

3 个答案:

答案 0 :(得分:0)

If you want to know it in activity, then just use:

Fragment fragment = getFragmentManager().findFragmentByTag(stringTag);
if (fragment != null) { 
       //here it means the fragment is been shown
}

And If you want to know it in fragment then do your stuff in fragment's any of the following life cycle method:


onAttach(); 
onCreate(); 
onCreateView(); 
onActivityCreated(); 
onStart(); //or
onResume();

一旦您的片段显示在屏幕上,这些就会被调用。参考:https://developer.android.com/guide/components/fragments.html#Creating

答案 1 :(得分:0)

在片段中使用以下函数:

 @Override
 public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

    if (isVisibleToUser) {
        //fragment is visible on screen...do your stuff here
    } 
    else {
        // fragment is no longer visible
    }
 }

答案 2 :(得分:0)

Espresso专为测试而设计,可以按照一步一步的配方进行,无需任何决策。您应该考虑片段何时可​​见以及何时不可见的情况。然后为每个场景编写单独的测试。