androidTest中URL.readText的FileNotFoundException

时间:2018-11-13 15:47:05

标签: android kotlin android-testing

在Android应用程序中,当我使用单元测试中的Kotlin类时,模拟android.util.Base64表示测试成功。作为androidTest运行测试,它在以下情况下失败:

URL(urlRequestToken).readText()

FileNotFoundException的网址抛出https。清单具有网络许可权(如果没有,则错误有所不同)。将urlRequestToken复制/粘贴到浏览器中会产生预期的结果,但是在测试中从手机中将URL加载到浏览器中总是会抛出FileNotFoundException

该测试包括对ConnectivityManager的网络检查,该检查成功,因此存在网络。

我还需要做其他事情才能使它从测试中访问URL吗?

1 个答案:

答案 0 :(得分:0)

发现FileNotFoundException是完全错误的,与找不到文件无关。单元测试在使用android.util.Base64模拟java.util.Base64时起作用。区别是android.util.Base64默认情况下使用包装,该包装在编码字符串的末尾添加了\n,这打破了Flickr签名。真正的错误是HTTP 401,因为签名无效,但是URL.readText将其报告为FileNotFoundException

Android中的解决方案是使用:

Base64.encodeToString(hmac.doFinal(baseString.toByteArray()), Base64.NO_WRAP)