#android #junit #automated-tests #android-intent #instrumentation
#Android #junit #автоматизированные тесты #android-намерение #инструментарий
Вопрос:
Я пытаюсь отправить ложные намерения в действие Android с помощью инструментов Android instrumentation tools и Android JUnit в Eclipse.
Я могу успешно создать тест, который отправляет одно из них 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
и создать намерение и тест для каждого из этих элементов?
Комментарии:
1. Было бы неплохо, если бы вы сообщили нам, соответствует ли приведенный ниже ответ тому, что вы искали…
Ответ №1:
Вы пробовали удалить запуск действия из кода настройки в цикл в вашем методе тестирования? Пример,
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