任何方式来获取Android的Junit测试的Actionbar项目的参考?



1 Answers

在下面的例子中,我能够检索操作栏的导航标签按钮(native或ActionBarSherlock)。 然后我用TouchUtils.clickView()点击它们:

try {

// Trying to get the ActionBar view '@id/android:action_bar_container' dynamically
int resId =
a.getResources().getIdentifier("action_bar_container", "id", "android");
View actionBarContainer = a.findViewById(resId);

// The class 'com.android.internal.widget.ActionBarContainer' must be in
// the classpath of this test project to be able to call
// the method 'getTabContainer' at runtime
Method getTabContainer =
com.android.internal.widget.ActionBarContainer.class.getMethod("getTabContainer",
(Class<?>[]) null);

HorizontalScrollView tabContainer =
(HorizontalScrollView) getTabContainer.invoke(actionBarContainer, (Object[]) null);
return ((ViewGroup) tabContainer.getChildAt(0)).getChildAt(tabIndex);

} catch (Exception e) {

// Trying with SherlockActionBar
com.actionbarsherlock.internal.widget.ActionBarContainer actionBarContainer =
(com.actionbarsherlock...) a.findViewById(R.id.abs__action_bar_container);

HorizontalScrollView tabContainer =
(HorizontalScrollView) actionBarContainer.getTabContainer();
return ((ViewGroup) tabContainer.getChildAt(0)).getChildAt(tabIndex);

}
}
Question

我如何编写android的操作栏项目的junit测试用例? 任何获得其参考的方式来执行点击事件?




我通过创建自己的自定义MenuItem类并手动为Activity调用onOptionsItemSelected(MenuItem项)来解决。 任何其他适当的方式来做这个Junit测试?






Related