我有两个相似的ImageView
。我决定不为第二个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
怎么了?
答案 0 :(得分:0)
查看2.3 -> Device settings
部分下面的链接:
建议在Android设备上打开动画 用于测试。动画可能会混淆Espressos的检查 隐藏资源。
http://www.vogella.com/tutorials/AndroidTestingEspresso/article.html
答案 1 :(得分:0)
似乎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());