В моем приложении для Android есть простой способ активировать намерение отображать URL-адрес.
protected void launchBrowser(int id)
{
Uri uri = Uri.parse( getString( id ) );
Intent intent = new Intent( ACTION_VIEW, uri);
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
if (activities.size() > 0)
{
startActivity(intent);
}
else
{
Toast.makeText(getApplicationContext(),
"ERROR - no application to display a web page",
Toast.LENGTH_SHORT).show();
}
}
Я использую Robolectric для модульного тестирования, но у меня возникают проблемы с проверкой этого метода. В частности, getPackageManager()
всегда возвращает значение null. Как я могу скрыть PackageManager
? Я попытался создать ShadowPackageManager
и вызвать bindShadowClass
, но ни один из моих кодов не выполняется — getPackageManager()
всегда возвращает null
. Я также пытался скрыть контекст приложения и вернуть конкретное StubPackageManager
, но получил те же результаты. Может быть, я слишком долго искал/смотрел - есть ли лучший способ модульного тестирования этого метода?