
我正在使用Robolectric,因为这可能是相关的.我试着调用Robolectric.runUiThreadTasksIncludingDelayedTasks();但这似乎没有解决任何问题.
动画代码如下:
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();}解决方法 我认为你可以解决这个问题,重新安排方法.这是通过将SimpleAnimatorListener提取到受保护变量,然后基于该单元进行单元测试.就像是: @VisibleForTestingSimpleAnimatorListener getAnimationListener(boolean show,VIEw vIEw) { return 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); } }public static voID regularFadeVIEw(boolean show,VIEw vIEw) { vIEw.animate() .setInterpolator(mDecelerateInterpolator) .Alpha(show ? 1 : 0) .setListener(getAnimationListener(show,vIEw)) .start();} 然后在你的测试:
private voID shouldShowVIEwWhenShowIsTrue() { VIEw mockedVIEw = Mockito.mock(VIEw.class); SimpleAnimatorListener animationListener = getAnimationListener(true,mockedVIEw); animationListener.onAnimationStart(null); Mockito.verify(mockedVIEw).setVisibility(VIEw.VISIBLE);} 更好的方法是使用getAnimationListener()等方法来创建一个扩展SimpleAnimatorListener的FadeAnimationListener,并将动画逻辑放在那里.
希望这可以帮助!
总结以上是内存溢出为你收集整理的如何对具有View Animators的Android代码进行单元测试?全部内容,希望文章能够帮你解决如何对具有View Animators的Android代码进行单元测试?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)