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 动画?
如何通过在 Xcode 中使用 watchkit 将其分配给 Wkinterfaceimage 来直接运行动画 Gif?