我希望能够使用AndroID JUnit测试来确认这些摘要更改都正确执行.但是,关于如何做到这一点的信息似乎很少.
我已尝试在ListPreference上使用setValue()的变体,无论是在测试线程中还是通过runOnUiThread(),都没有成功 – 这不会触发对onPreferenceChange()的调用.我在调用setValue()之后也尝试了getInstrumentation().waitForIDleSync(),但这也没有成功.
所以,我的问题是:这是怎么做到的?
谢谢!
解决方法 再过几个小时的工作就产生了这个有效的解决方案,但我很好奇其他人是否有更好的解决方案.这个代码的灵感来自于 this solution的类似问题,但这种情况在两个方面有所不同:>它适用于AndroID JUnit,这意味着它需要通过runOnUiThread()调用ListPreference UI点击.
>它预计会有使用的偏好类别,这使得查找位置(相对于整个首选项列表)变得复杂.上述解决方案仅适用于没有偏好类别的情况.
此方法将接受特定ListPreference项的键,以及要单击的列表中项的位置.然后它将执行该列表项单击,其他代码将执行我正在寻找的检查.
请注意,这需要setActivityInitialtouchMode(true);在setUp()方法中调用getActivity()之前设置.
private voID clickListPreference(String _ListPreferenceKey,int _ListItemPos){ final String ListPreferenceKey = _ListPreferenceKey; final int ListItemPos = _ListItemPos; mActivity.runOnUiThread( new Runnable() { public voID run() { // get a handle to the particular ListPreference ListPreference ListPreference= (ListPreference) mActivity.findPreference(ListPreferenceKey); // bring up the dialog Box mActivity.getPreferenceScreen().onItemClick( null,null,getPreferenceposition(),0 ); // click the requested item AlertDialog ListDialog = (AlertDialog) ListPreference.getDialog(); ListVIEw ListVIEw = ListDialog.getListVIEw(); ListVIEw.performItemClick(ListVIEw,ListItemPos,0); } /*** * Finding a ListPreference is difficult when Preference CategorIEs are involved,* as the category header itself counts as a position in the preferences screen * List. * * This method iterates over the preference items insIDe preference categorIEs * to find the ListPreference that is wanted. * * @return The position of the ListPreference relative to the entire preferences screen List */ private int getPreferenceposition(){ int counter = 0; PreferenceScreen screen = mActivity.getPreferenceScreen(); // loop over categorIEs for (int i = 0; i < screen.getPreferenceCount(); i++){ Preferencecategory cat = (Preferencecategory) screen.getPreference(i); counter++; // loop over category items for (int j = 0; j < cat.getPreferenceCount(); j++){ if (cat.getPreference(j).getKey().contentEquals(ListPreferenceKey)){ return counter; } counter++; } } return 0; // dID not match } } ); getInstrumentation().waitForIDleSync();}总结
以上是内存溢出为你收集整理的Android JUnit首选项测试全部内容,希望文章能够帮你解决Android JUnit首选项测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)