Espresso 不使用 Gif 动画运行 Activity 测试

Posted

技术标签:

【中文标题】Espresso 不使用 Gif 动画运行 Activity 测试【英文标题】:Espresso doesn't run Activity test with Gif animation 【发布时间】:2018-07-03 02:13:53 【问题描述】:

我正在尝试使用Espresso 测试Activity 中的意图和Fragment(在同一活动中)中的一些按钮点击,但问题是Fragment 包含带有Gif 动画的自定义视图在里面。自定义视图基本上是Movie 类的变体,用于显示Gif错误我得到的是

无法在 45 秒内启动 Intent。也许主要 线程在合理的时间内没有空闲

所以它表明我认为 Gif 导致主线程被加载并且测试无法运行。 我尝试了什么:

    在开发选项中关闭所有树动画比例(尝试了 2 台设备) 使用 Ui automator 并运行 shell adb 命令关闭动画 尝试在测试期间将 Gif 的可见性设置为消失

没有一个不起作用。我想这个自定义视图不被平台视为动画并且不会被关闭。我仍然可以看到它。我尝试findViewById 并将可见性设置为gone。测试开始时视图仍然存在。我认为让视图消失是一个很好的解决方法,所以也许有人知道方法!

我的测试代码:

@RunWith(androidJUnit4.class) public class TutorialActivityTest 

    private TutorialActivity tutorialActivity;
    private TutorialFragment tutorialFragment;

    @Rule
    public ActivityTestRule<TutorialActivity> mActivityRule = new ActivityTestRule<>(TutorialActivity.class);

    @Before
    public void setUp() 
        tutorialActivity = mActivityRule.getActivity();
        //tried to set visibility there with fragment.getView().findViewById... And also in the test directly

    @Test
    public void testOpenMainPageIntentFired() 
        Intents.init();
        tutorialActivity.openMainPage();
        intended(hasComponent(MainActivity.class.getName()));
        Intents.release();
    

【问题讨论】:

你发现了吗,我也有同样的问题 不,我没有,毕竟不需要 ui 测试这个类。但是电影不是动画,所以我仍然认为最好的办法是让包含 gif 的视图“消失”,但我没有走这条路让它工作!如果您知道如何操作,请务必发布此问题的答案! 【参考方案1】:

由于 GIF 动画会阻止进入 IDLE 状态,我建议在测试期间传递 GIF 应该去的静态模拟图像资源。这样,您不必隐藏视图并仍然测试布局组合,因为它将在生产环境中进行。

【讨论】:

以上是关于Espresso 不使用 Gif 动画运行 Activity 测试的主要内容,如果未能解决你的问题,请参考以下文章

Espresso 不适用于 NineOldAndroids 动画?

Espresso 测试禁用动画

如何通过在 Xcode 中使用 watchkit 将其分配给 Wkinterfaceimage 来直接运行动画 Gif?

Z-index 阻止了 gif 动画的运行 | Jquery CSS HTML JS [重复]

在不破坏动画的情况下调整动画 GIF 文件的大小

动画 GiF [关闭]