也许这是有史以来最荒谬的问题,或者我只是不能直接思考 - 但在使用URLUtil.isHttpsUrl()
中的android.webkit
时我遇到了一种非常奇怪的行为。
我正在为我的项目编写一些Unittests,并检测到一个方法返回了一个意外的值,因为该URL被认为无效。
试图缩小范围,我最终得到了一个像这样的简单测试用例:
@Test
public void testSimpleHttpsCheck() {
String url = "https://www.this.ishttps.com";
Assert.assertTrue(isHttpsUrl(url)); // returns true
Assert.assertTrue(URLUtil.isHttpsUrl(url)); // returns false
}
// this is a local copy of isHttpsUrl:
// it is simple copied from the original URLUtil (SDK 25)
private boolean isHttpsUrl(String url) {
return (null != url) &&
(url.length() > 7) &&
url.substring(0, 8).equalsIgnoreCase("https://");
}
如您所见,我只是从URLUtil.isHttpsUrl()
包中复制了android.webkit
。
我已将其与compileSdkVersion 25
和compileSdkVersion 24
一起使用。
“URLUtil.isHttpUrl()
我已经尝试清理+重建项目,重启+ AS的无效缓存。
有人可以解释发生了什么吗?我做错了吗?
或者Unittest类可能有问题吗?
这是一个简单的JUnit测试,我在这个gradle中设置了returnDefaultValues
:
android {
...
...
testOptions {
unitTests.returnDefaultValues = true
}
}
虽然,我会假设“与上下文相关”的调用会获得默认值,但URLUtil.isHttpsUrl()
是静态的,不涉及任何上下文。
答案 0 :(得分:0)
好吧,看起来甚至静态的Util类都需要一个仪表单元测试。我刚刚在没有testOptions
的情况下对其进行了测试,并且知道Method isHttpsUrl in android.webkit.URLUtil not mocked.
很抱歉打扰你,我刚刚意识到,当我准备发布我的问题时,它可能与testOptions
有关。经过2个小时的调试,几乎失去了对编程技巧的信心。
希望有人可以使用这个答案,并且不要在简单的Unittest案例上浪费那么多时间。