【发布时间】:2017-08-25 12:45:03
【问题描述】:
也许这是有史以来最荒谬的问题,或者我无法再思考了 - 但我在使用来自 android.webkit 的 URLUtil.isHttpsUrl() 时遇到了非常奇怪的行为。
我正在为我的项目编写一些单元测试,并检测到一个方法返回了一个意外的值,因为 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://");
}
如您所见,我只是从android.webkit 包中复制了URLUtil.isHttpsUrl()。
我已经将它与compileSdkVersion 25 和compileSdkVersion 24 一起使用。
`URLUtil.isHttpUrl()
我已经尝试清理+重建项目,重新启动+无效的AS缓存。
有人可以解释发生了什么吗?我是不是做错了什么?
还是 Unittest 类有问题?
这是一个简单的 JUnit 测试,我在 gradle 中设置了 returnDefaultValues,如下所示:
android {
...
...
testOptions {
unitTests.returnDefaultValues = true
}
}
虽然我会假设“与上下文相关的”调用会获得默认值,但 URLUtil.isHttpsUrl() 是静态的,不涉及任何上下文。
【问题讨论】:
标签: java android unit-testing