私の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
たが、同じ結果が得られました。たぶん私はあまりにも長い間検索/凝視してきました-この方法をユニットテストするためのより良い方法はありますか?