Как я могу автоматизировать тест, который отправляет несколько ложных намерений в действие Android?

#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