我的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。我该如何 shadow PackageManager
?我尝试创建一个 ShadowPackageManager
并调用 bindShadowClass
,但是我的代码没有被执行——getPackageManager()
总是返回 null
。我还尝试 shadow 应用程序上下文并返回一个具体的 StubPackageManager
,但是结果相同。也许我已经搜索/盯着屏幕太久了——有更好的方法来进行单元测试吗?