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