2015-09-02 38 views
0

我正试图学习如何编写适用于Android的仪器测试。我有一个扩展ActivityInstrumentationTestCase2的类来测试我的Activity。在我的测试中一个我尽量做到以下几点:如何从ActivityInstrumentationTestCase2中与UI组件进行交互?

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

从阅读围绕这听起来像我不能以这种方式与UI组件交互 - 我要创建一个新的可运行,并在运行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似乎暗示可能(至少对于微调)。这是可能的还是我不得不担心在第一个链接建议的不同线程上运行?

+0

有你厌倦了这种'TouchUtils.clickView(这一点,mClickMeButton);' –

+1

惊人!这工作。谢谢。你能告诉我为什么工作,但不是测试文档中描述的方式,也不是使用@UiThreadTest批注? – tytk

+0

Instrumentation是功能测试,所以要执行触摸,您需要使用'TouchUtils'而不是'onClick()',它将与'unit test'一起使用。 –

回答

0

正如评论所解释的穆罕默德·巴巴尔,我需要使用TouchUtils.clickView()

相关问题