如何对具有View Animators的Android代码进行单元测试?

如何对具有View Animators的Android代码进行单元测试?,第1张

概述我有一个实例,其中显示和隐藏了几个按钮,具体取决于ViewPager中的哪个页面正在显示.使用Animators显示和隐藏.有没有办法检查/延迟单元测试,直到完成为止? 我正在使用Robolectric,因为这可能是相关的.我试着调用Robolectric.runUiThreadTasksIncludingDelayedTasks();但这似乎没有解决任何问题. 动画代码如下: public st 我有一个实例,其中显示和隐藏了几个按钮,具体取决于VIEwPager中的哪个页面正在显示.使用Animators显示和隐藏.有没有办法检查/延迟单元测试,直到完成为止?

我正在使用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代码进行单元测试?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1122230.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存