【发布时间】:2015-08-16 13:36:45
【问题描述】:
我有这个制作方法:
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。
谢谢!
【问题讨论】:
-
问题可能出在 Uri 中,可能在测试环境中初始化错误。我们
Uri不存在于Android SDK 中URI存在。所以它看起来不像是一个交付的类,这可能是问题所在。与 mockito 无关。 -
@Brice 谢谢。是的,这似乎是问题所在。您应该将此作为答案发布。 Uri 类来自 Android。所以 Mockito 以这种方式使用它会遇到一些困难。
-
完成 :) 希望有所帮助。
-
@Alon 您是如何准确解决问题的?如何在 Android 中正确初始化我的测试环境?
标签: android unit-testing testing mocking