Mar*_*ark 13 android-testing android-espresso
尝试使用ViewPager进行一些测试.
我想在标签之间滑动,我不想继续直到滑动完成.但似乎没有办法关闭视图寻呼机的动画(禁用开发人员选项下的所有动画).
因此,这总是会导致测试失败,因为视图寻呼机尚未完成动画,因此视图尚未完全显示:
// swipe left
onView(withId(R.id.viewpager)).check(matches(isDisplayed())).perform(swipeLeft());
// check to ensure that the next tab is completely visible.
onView(withId(R.id.next_tab)).check(matches(isCompletelyDisplayed()));
Run Code Online (Sandbox Code Playgroud)
是否有一种优雅的,甚至是推荐的方式来做到这一点,还是我不能在那里进行某种定时等待?
vau*_*oid 26
实施的IdlingResource@Simas实际上非常简单:
public class ViewPagerIdlingResource implements IdlingResource {
    private final String mName;
    private boolean mIdle = true; // Default to idle since we can't query the scroll state.
    private ResourceCallback mResourceCallback;
    public ViewPagerIdlingResource(ViewPager viewPager, String name) {
        viewPager.addOnPageChangeListener(new ViewPagerListener());
        mName = name;
    }
    @Override
    public String getName() {
        return mName;
    }
    @Override
    public boolean isIdleNow() {
        return mIdle;
    }
    @Override
    public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
        mResourceCallback = resourceCallback;
    }
    private class ViewPagerListener extends ViewPager.SimpleOnPageChangeListener {
        @Override
        public void onPageScrollStateChanged(int state) {
            mIdle = (state == ViewPager.SCROLL_STATE_IDLE
                    // Treat dragging as idle, or Espresso will block itself when swiping.
                    || state == ViewPager.SCROLL_STATE_DRAGGING);
            if (mIdle && mResourceCallback != null) {
                mResourceCallback.onTransitionToIdle();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           4439 次  |  
        
|   最近记录:  |