我有一个方法,它尝试使用特定的URL启动浏览器,或者如果设备没有安装浏览器,则使用WebView
启动Activity
并加载相同的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
发布于 2019-06-13 03:39:33
这真的是太过工程学了。用户没有在设备上安装web浏览器的几率为0。这不值得担心。
如果你担心url是无效的和无法解析的,这不太可能解决这个问题,因为它在你的web视图活动中也是无法解析的。如果你真的想变得偏执,我会抓住它,并为一个错误干杯。
至于测试-重构以使其可测试。将此代码编写为一个将URL作为参数的函数。对于不好的版本,请使用类似thisisnotavalidscheme://example.com的URL。这将失败,因为没有人将注册该计划。
https://stackoverflow.com/questions/56569147
复制相似问题