Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何对具有View Animators的Android代码进行单元测试?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个实例,其中显示和隐藏了几个按钮,具体取决于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提取到受保护变量,然后基于该单元进行单元测试.就像是:

@VisibleForTesTing
SimpleAnimatorListener 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代码进行单元测试?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。