如何从ActivityInstrumentationTestCase2中与UI组件交互?

时间:2015-09-02 05:46:12

标签: java android multithreading junit instrumentation

我正在尝试学习如何为Android编写测试测试。我有一个扩展ActivityInstrumentationTestCase2的类,以便测试我的Activity。在我的一个测试中,我尝试执行以下操作:

Button button = (Button) getActivity().findViewById(R.id.my_button);
button.performClick() // this method throws CalledFromWrongThreadException

从阅读中看起来听起来我无法以这种方式与UI组件交互 - 我必须创建一个新的runnable并在UI线程(Testing with UI elements in Android view)上运行它或运行整个测试使用@UiThreadTest(Android: Only the original thread that created a view hierarchy can touch its views - UnitTest)在UI线程上。然而,前一种解决方案非常麻烦,后者根本不适用于我(同样的异常会被抛出)。

我想要的是能够直接与按钮交互,因为testing fundamentals documentation似乎可以建议(至少对于Spinner而言)。这是可能的还是我不得不担心在第一个链接建议的不同线程上运行?

1 个答案:

答案 0 :(得分:0)

正如Muhammed Babar在评论中所解释的那样,我需要使用TouchUtils.clickView()