在Android应用程序中,当我使用单元测试中的Kotlin类时,模拟android.util.Base64
表示测试成功。作为androidTest运行测试,它在以下情况下失败:
URL(urlRequestToken).readText()
将FileNotFoundException
的网址抛出https
。清单具有网络许可权(如果没有,则错误有所不同)。将urlRequestToken
复制/粘贴到浏览器中会产生预期的结果,但是在测试中从手机中将URL
加载到浏览器中总是会抛出FileNotFoundException
。
该测试包括对ConnectivityManager
的网络检查,该检查成功,因此存在网络。
我还需要做其他事情才能使它从测试中访问URL吗?
答案 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)