我正在尝试用Espresso
测试Activity
中的意图和Fragment
中的一些按钮单击(在同一活动中(,但问题是Fragment
包含一个带有Gif
动画的自定义视图。自定义视图基本上是Movie
类的变体,以显示Gif
。错误我得到的是
无法在 45 秒内启动意向意图。也许主要的 线程未在合理的时间内空闲
所以这表明我认为 Gif 导致主线程加载并且测试无法运行。 我尝试过:
- 关闭开发选项中的所有树动画比例(尝试了 2 台设备(
- 使用 Ui 自动操作并运行 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();
}
由于 GIF 动画将防止进入空闲状态,因此我建议在测试期间将 GIF 应该传递到的静态模拟图像资源。这样,您就不必隐藏视图,并且仍然像在生产环境中一样测试布局组合。