Как проверить ListActivity?

1

Я новичок в разработке Android, а также в разработке, основанном на тестах. Я хочу написать модульные тесты для следующей ListActivity:

public class TrendsMainActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    String[] list_items = getResources().getStringArray(R.array.trend_menu_names);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.main, list_items));
}

@Override
protected void onListItemClick(ListView listView, View view, int position, long id)
{
    Intent intent = null;

    switch(position)
    {
        case 0:
            intent = new Intent(this, TrendingActivity.class);
            break;
        case 1:
            intent = new Intent(this, SearchActivity.class);
            break;
        case 2:
            intent = new Intent(this, TimelineActivity.class);
            break;
    }
    if(intent != null)
    {
        startActivity(intent);
    }
    else
    {
        Log.e(getClass().getSimpleName(), "There was an error retrieving request.");
    }
}}

Я просмотрел всю документацию, которую я могу найти, но я не могу понять, как проверить это действие. Метод onListItemClick не завершен, но он дает представление о том, чего я хочу выполнить. Я хочу протестировать щелчок по первому элементу в ListView и проверить, запускается ли правильная активность.

Как я могу это сделать?

Изменить: мне нужен мой тест "click" для элемента в ListView. Затем я хочу утверждать, что начатая активность - это правильная деятельность (например, нажатие элемента ListView 0 запускает функцию TrendingActivity)

  • 0
    Что вы подразумеваете под «Проверь это занятие»? запустить приложение, содержащее список? или проверить код?
  • 0
    Я хочу провести модульное тестирование кода.
Теги:
unit-testing

1 ответ

4
Лучший ответ

Я должен сказать, что если вы применяли TDD, вы должны были начать писать тесты, а не приложение.

В любом случае, Руководство по тестированию приложений для Android содержит в главе 3 два примера, которые в совокупности могут дать вам решение, которое вы ищете. Идея состоит в том, чтобы использовать ActivityMonitor, чтобы убедиться, что ожидаемая активность была запущена.

@UiThreadTest
public void testListItemClickStartsActivity() {
    final Instrumentation inst = getInstrumentation();
    final IntentFilter intentFilter = new IntentFilter();
    // here add conditions to your filter, i.e. intentFilter.addAction()
    ActivityMonitor monitor = inst.addMonitor(intentFilter, null, false);
    assertEquals(0, monitor.getHits());
    // here perform desired click on list
    monitor.waitForActivityWithTimeout(5000);
    assertEquals(1, monitor.getHits());
    inst.removeMonitor(monitor);
}
  • 0
    Я получил книгу, и вы отлично поработали. Это очень пригодится для меня. Я отредактировал свой оригинальный вопрос, чтобы быть более конкретным. Вполне возможно, что я не использую действия и представление списка правильно. Я попытался собрать воедино информацию из главы 3, но кажется, что она просто подтверждает, что действие было начато, а не то, что было начато. Я что-то пропустил?
  • 1
    Если фильтр соответствует нескольким действиям, вы можете использовать ActivityMonitor # getLastActivity () [ developer.android.com/reference/android/app/…, чтобы узнать, какое из них соответствует.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню