我正在尝试学习如何为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而言)。这是可能的还是我不得不担心在第一个链接建议的不同线程上运行?
答案 0 :(得分:0)
正如Muhammed Babar在评论中所解释的那样,我需要使用TouchUtils.clickView()