我有两个类似的ImageView
s。我决定不为第二个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());