2016-09-29 46 views
0

如果我的片段之一,rattingfragment,我必须执行单击。 如果没有,请执行其他操作。我如何知道是否显示一个片段(测试UI)

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

Android UI测试。 下面我的代码来测试 编辑 CODE:

@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(); 
    } 
} 
+0

这种情况有很多解决方案,但最好的方法是通过instanceOf方法获取当前片段。像使用它(currentFragmet instanceOf rattingfragment){} – HAXM

+0

http://stackoverflow.com/a/24589081/4961126 – HAXM

回答

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

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 
    } 
} 
相关问题