运行ActivityTestRule测试用例时,如何指定android Instrumentation上下文?

时间:2019-11-16 00:43:14

标签: android-espresso android-testing

我为我的应用程序连接了一个具有两个显示器(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事件。我的问题是: 我应该如何指定检测环境?或者您对此测试有更好的想法。

非常感谢您的时间。

0 个答案:

没有答案