当旋转ImageView时,浓缩咖啡测试需要很长时间



我有两个类似的ImageViews。我决定不为第二个ImageView创建不同的可绘制对象,而是使用相同的可绘制对象旋转它。

<ImageView
android:id="@+id/rightTurn_imageView"
android:layout_width="@dimen/width_imageViews_feedback_area_info"
android:layout_height="@dimen/height_imageViews_feedback_area_info"
android:layout_marginLeft="@dimen/margin_before_imageViews_feedback_area_info"
android:layout_marginStart="@dimen/margin_before_imageViews_feedback_area_info"
android:layout_marginTop="@dimen/margin_above_imageViews_feedback_area_info"
android:scaleType="fitCenter"
app:layout_constraintStart_toEndOf="@+id/emergency_imageView"
app:layout_constraintTop_toTopOf="@+id/feedback_area_info"
android:rotation="180"/> <! -- The line where the problem occurs -->

我正在尝试使用Espresso测试我的 UI。我正在尝试查看是否出现 Toast 并且Test功能需要很长时间。

@Test
fun showToastOnClickRightDirectionLight() {
onView(withId(R.id.rightTurn_imageView))
.perform(click())
onView(
withText(
containsString(
activityRule.activity.resources.getString(
R.string.long_click_info
)
)
)
)
.inRoot(RootMatchers.withDecorView(not(activityRule.activity.window.decorView)))
.check(matches(isDisplayed()))
}

每当我从xml(android:rotation="180"(中删除旋转线时,测试都会成功完成。
当我测试 UI 时,用我的手指(!(一切它都可以正常工作,即使它是否旋转。

是否有解决此问题的方法,或者我应该创建另一个可绘制对象?

另外,有人可以解释为什么会发生这种情况吗?rotating时有什么问题?

请查看第2.3 -> Device settings节下面的链接:

建议在安卓设备上打开动画 用于测试。动画可能会混淆浓缩咖啡检查 资源。

http://www.vogella.com/tutorials/AndroidTestingEspresso/article.html

似乎setRotation可能影响了屏幕上视图的坐标计算。因此,您可以尝试使用自定义点击操作:

public static ViewAction forceClick() {
return new ViewAction() {
@Override public Matcher<View> getConstraints() {
return allOf(isClickable(), isEnabled(), isDisplayed());
}
@Override public String getDescription() {
return "force click";
}
@Override public void perform(UiController uiController, View view) {
view.performClick();
uiController.loopMainThreadUntilIdle();
}
};
}

然后在按钮或任何带有单击侦听器的视图上使用它:

onView(withId(R.id.move_up)).perform(forceClick());

最新更新