我正在尝试通过Eclipse中的Android工具和Android JUnit向Android活动发送模拟意图。
我能够成功地创建一个测试,将一个Intent发送到Activity,但我想自动执行此操作,并发送几个连续的Intents,这样我就可以测试Activity,并将许多数据作为“额外”数据放入Intent中。我的代码(只适用于单一意图)如下:
public class SearchTest extends ActivityInstrumentationTestCase2<SearchResults> {
private ListActivity mActivity;
private ArrayList<String> testManifest = new ArrayList<String>();
TextView tv;
public SearchTest() {
super("org.fdroid.fdroid", SearchResults.class);
}//SearchTest
@Override
protected void setUp() throws Exception{
setUpTestManifest();
super.setUp();
setActivityInitialTouchMode(false);
Intent i = new Intent(Intent.ACTION_SEARCH);
i.setClassName("org.fdroid.fdroid", "org.fdroid.fdroid.SearchResults");
i.putExtra(SearchManager.QUERY, testManifest.get(0));
setActivityIntent(i);
mActivity = getActivity();
tv = (TextView) mActivity.findViewById(R.id.description);
}//setUp
public void testSearchResult(){
assertTrue(mActivity.getListView().getCount() > 0);
}//testSearchResult
public void setUpTestManifest(){
//populate the test manifest
testManifest.add("Sample Key Word 1");
testManifest.add("Sample Key Word 2");
testManifest.add("Sample Key Word 3");
}//setupManifest
}//SearchTest 当我在testManifest中有成百上千个项目,并为每个项目创建意图和测试时,我如何才能做到这一点?
发布于 2011-04-27 21:48:16
您是否尝试过将活动的启动从setUp代码中拉出并放入测试方法中的循环中?例如,
protected void setUp() {
setUpTestManifest();
super.setUp();
}
public void testSearchResult(){
for (String query : testManifest) {
setActivityInitialTouchMode(false);
Intent i = new Intent(Intent.ACTION_SEARCH);
i.setClassName("org.fdroid.fdroid", "org.fdroid.fdroid.SearchResults");
i.putExtra(SearchManager.QUERY, query);
setActivityIntent(i);
mActivity = getActivity();
tv = (TextView) mActivity.findViewById(R.id.description);
assertTrue(mActivity.getListView().getCount() > 0);
mActivity.finish(); // close the activity
setActivity(null); // forces next call of getActivity to re-open the activity
}
}-Dan
https://stackoverflow.com/questions/5708630
复制相似问题