我有这样的制作方法:
public boolean onShouldOverrideUrlLoading(String url) {
boolean isConsumed = false;
if (url.contains("code=")) {
Uri uri = Uri.parse(url);
String authCode = uri.getQueryParameter("code");
mView.authCodeObtained(authCode);
isConsumed = true;
}
return isConsumed;
}
我有这个 Mockito 测试方法:
@Test
public void onShouldOverrideUrlLoadingOnAuthCodeObtained(){
String code = "someCode";
boolean isConsumed = mPresenter.onShouldOverrideUrlLoading("http://localhost/?code=" + code);
verify(mView, times(1)).authCodeObtained(code);
assertEquals(isConsumed, true);
}
但似乎一旦代码运行并到达 Uri.parse(url),我就会得到一个空指针。我错过了什么?在生产中这完美地工作。仅在测试时,Uri.parse() 返回 null。
谢谢!
原文由 Alon Minski 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题可能在于
Uri
类,因为被测试的代码是静态代码(Uri.parse(...)
),Uri
环境可能是 test bad-izing-请注意,Android SDK 中有两个 uri 类:android.net.Uri
java.net.URI
我不是 Android 开发人员,但您可能需要检查测试环境。