UnitTesting и функциональное тестирование на Android - PullRequest
3 голосов
/ 10 ноября 2010

Я создал приложение, которое отправляет намерения между несколькими действиями.Проведя некоторые исследования, я обнаружил, что класс ActivityUnitTestCase предназначен для модульного тестирования, а класс ActivityInstrumentationTestCase2 предназначен для функционального тестирования.Я понимаю использование таких методов, как setUp(), tearDown() и testPreConditions().Однако у меня возникли небольшие трудности в попытке выяснить, какие пользовательские тесты создать в ранее упомянутых классах.Я знаю, что есть несколько методов, которые нельзя вызывать в определенных классах.

Если быть более точным, если я нахожусь в мероприятии A и я нажимаю кнопку, то она вызывает startActivityForResult(), которая запускает занятие B .Затем я отправляю намерение обратно на действие A , которое обрабатывается методом onActivityResult().Как я могу проверить, что фактический результат в onActivityResult() равен ожидаемому результату?

Я много искал примеры, которые бы помогли разобраться в этой путанице.Если бы кто-нибудь мог оказать какую-либо помощь, я был бы очень признателен.

1 Ответ

1 голос
/ 06 мая 2011

Для такого типа вещей вы, вероятно, протестировали бы результаты, отправленные в onActivityResult косвенным путем, фактически протестировав изменения, внесенные в представление контроллером представления.Мы используем экземпляр ActivityInstrumentationTestCase2 в сочетании с библиотекой Robotium (которую я настоятельно рекомендую).

public class AdvancedSearchActivityTest extends ActivityInstrumentationTestCase2<AdvancedSearchActivity> {

    private Solo solo;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        solo = new Solo(getInstrumentation(), getActivity());
    }

    public void testWhenActivityLoads_shouldShowCorrectWidgets() throws Exception {
        assertTrue(solo.searchText("Location:"));
        assertTrue(solo.searchText("Map Radius:"));
        assertTrue(solo.searchButton("Search"));
    }
}

ActivityInstrumentationTestCase2 указывает только базовую активность для запуска, поэтому нет причин, по которым вы не можете запускать другие действия с помощью теста (имитировать нажатие кнопки и т. Д.), А затем возвращаться к тем, у которых есть результаты,Мы делали это здесь много раз.Хотя я бы не пытался сделать тест интеграционного типа, пытаясь получить результаты из onActivityResult напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...