2016-10-16 3 views
0

Я пытаюсь настроить несколько тестов эспрессо для своего приложения.Могут быть объединены тесты и тесты эспрессо в одном пакете

Я хочу позвонить onActivityResult() из одного из тестов, но поскольку он защищен, он не будет работать, если тест находится в другом пакете.

Но если это испытание в одном пакете, а затем пытается запустить юнит-тестов завершается с ошибкой, как:

Класс не найден: «com.example.MainActivityTest» Пустой набор тестов.

ответ

0

Вы не должны вызывать onActivityResult() из своего теста. То, что вы должны делать, поскольку в тесте будет задействовано более одного действия, необходимо использовать UiAutomator для вызова другой операции, которая отправляет результат, взаимодействует с ним, чтобы фактически отправить результат, а затем в вашей проверенной деятельности проверить, что все, что отражено в Пользовательский интерфейс, когда результат получен, произошел.

+1

Даже лучший подход будет заключаться в использовании эспрессо-намерений, где вы могли бы в основном перехватить намерение «запросить» и ответить с помощью консервированного ответа. Если этот сценарий возможен, конечно, из тестовой перспективы :) –

+0

Espresso-Intents - это расширение для Espresso, которое позволяет проверять и удалять Intents * отправлено * тестируемым приложением. Затем вы сможете протестировать часть 'startActivityForResult()', но не, если ожидаемое поведение будет показано при получении Intent в 'onActivityResult()' –

+0

OK, я выяснил способ использования Espresso Intents для вызова * onActivityResult *. В принципе, как раздел * Stubbing Intents * от https://google.github.io/android-testing-support-library/docs/espresso/intents/, но замените * toPackage * в заглушке на * hasComponent *, чтобы соответствовать активности, которая отправит результат. Поэтому изменение этого диалога для активности было немного более разрушительным для моих тестов, чем я надеялся, но это исправляет его с помощью тестов эспрессо, изолированных от обычных модульных тестов. –

Смежные вопросы