I have an instance where a couple buttons are shown and hidden depending on which page in a ViewPager is being shown. The are shown and hidden with Animators. Is there a way to check for/delay unit testing until this has been completed?
I'm using Robolectric since that's probably relevant. I tried calling Robolectric.runUiThreadTasksIncludingDelayedTasks();
but this didn't seem to fix anything.
The animation code is as follows:
public static void regularFadeView(final boolean show, final View view) {
view.animate()
.setInterpolator(mDecelerateInterpolator)
.alpha(show ? 1 : 0)
.setListener(new SimpleAnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
if (show) view.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animation) {
if (!show) view.setVisibility(View.INVISIBLE);
}
})
.start();
}
I ended up creating an AnimationUtility interface and a real and fake implementations. The fake implementation immediately set the view to visible/hidden instead of doing the animation. I dynamically inject the real/fake one depending on the proper context.