Тестирование Android - изменить системное значение для тестирования логической ветви - PullRequest
0 голосов
/ 12 июня 2019

У меня есть метод, который пытается запустить браузер с определенным URL-адресом или, если на устройстве не установлен браузер, вместо этого запускается Activity с WebView и загружается тот же URL-адрес. В основном это:

try {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    getActivity().startActivity(intent);
  } catch (ActivityNotFoundException e) {
    Intent intent = new Intent(getActivity(), MyWebView.class);
    intent.putExtra(EXTRA_URL, url);
    getActivity().startActivity(intent);
  }
}

Как я могу проверить обе ветви? Можно ли временно отменить регистрацию активности браузера с устройства?

Я рассмотрел Shadow Activity, который просто выбрасывает ActivityNotFoundException, когда ему был передан этот конкретный Intent (я бы проверил URI данных), но AFAIK нет способа повернуть это Shadow включен для одного теста и выключен для другого.

TYIA

1 Ответ

0 голосов
/ 12 июня 2019

Это действительно закончено.Вероятность того, что у пользователя нет веб-браузера на устройстве, равна 0. Не стоит беспокоиться об этом.

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

Что касается тестирования - рефакторинг, чтобы сделать его тестируемым.Запишите это как функцию, которая принимает URL в качестве параметра.Для плохой версии используйте URL-адрес, например thisisnotavalidscheme: //example.com.Это не удастся, так как никто не будет зарегистрирован для этой схемы.

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