我为我的应用程序连接了一个具有两个显示器(Display1,display2)的android系统。我的应用程序有一个正在display2上运行的活动。我试图使用android espresso库来测试我在display2上的活动。
下面是我的测试代码:
onView(withId(R.id.button_test)).check(matches(isDisplayed())); //This line worked fine, it means espresso found my view successfully.
onView(withId(R.id.button_test)).withFailureHandler(new FailureHandler() {
@Override
public void handle(Throwable error, Matcher<View> viewMatcher){
if(error != null){
}
}
}).check(matches(isDisplayed())).perform(click());
我总是有一个例外:
androidx.test.espresso.PerformException:执行“单击-在坐标:78、119和精度:16、16”时出错 在视图'MyDrawableView {id = 2131361875,res-name = button_info,desc = Toggle,能见度= VISIBLE,宽度= 64,高度= 64,has-focus = true,has-focusable = true,has-window-focus = true ,is-clickable = true,is-enabled = true,is-focused = true,is-focusable = true,is-layout-requested = false,is-selected = true,layout-params = android.support.constraint.ConstraintLayout $ LayoutParams @ f6fa020,标记=空,root-is-layout-requested = false,has-input-connection = false,x = 47.0,y = 88.0}”。
似乎坐标(78,119)位于Display1上。我还检查了ActivityTestRule源代码,发现:
instrumentation = InstrumentationRegistry.getInstrumentation();
该工具正在使用Display1上下文执行click事件。我的问题是: 我应该如何指定检测环境?或者您对此测试有更好的想法。
非常感谢您的时间。