插桩测试使用主 AndroidManifest 而不是测试版本

Instrumented test uses main AndroidManifest instead of the test version

提问人:JonasVautherin 提问时间:10/25/2023 最后编辑:JonasVautherin 更新时间:10/25/2023 访问量:37

问:

我正在尝试在某些 Android 插桩测试中使用 OkHttp,但出现以下错误:

java.net.UnknownServiceException:网络安全策略不允许与 localhost 进行明文通信

对于 API 28 及更高版本,文档指出应在这种情况下进行设置。android:usesCleartextTraffic

如果我设置我的 ,那么它就可以工作了。但这不是我想要的;我只想为测试启用此功能。android:usesCleartextTraffic="true"main/AndroidManifest.xml

所以我创建了myproject/app/src/androidTest/AndroidManifest.xml,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <application android:usesCleartextTraffic="true" />
</manifest>

它做到了我所期望的:生成的检测 apk(./app/build/intermediates/apk/androidTest/debug/app-debug-androidTest.apk)有一个正确设置的 AndroidManifest(我直接在 app-debug-androidTest.apk 中检查过。usesCleartextTrafficapktool

但这似乎并不重要,因为无论如何,在运行时它会以某种方式依赖于主应用程序的 AndroidManifest:./app/build/intermediates/apk/debug/app-debug.apk。如果我在主 AndroidManifest 中设置,那么它可以工作。但这不是我想要的;我只想要它用于仪器化测试!usesCleartextTraffic=true

app-debug-androidTest.apkapp-debug 之间有什么关系.apk在运行插桩测试时,如何使 androidTest/AndroidManifest.xml 在运行插桩测试时具有优先级(或被合并)到主测试中?

android-manifest android-testing instrumented-test

评论

0赞 BenjyTec 10/25/2023
您是否尝试过此处提供的解决方案?stackoverflow.com/q/26244998/8331157
0赞 JonasVautherin 10/25/2023
是的。我所看到的是,人们一直在努力使AndroidManifest.xml正确合并。但就我而言,它似乎是,但只是以某种方式被忽略了。usesCleartextTraffic
0赞 JonasVautherin 10/26/2023
嗯,感觉这是不可能的。如果有人有解决方案,我会保持打开状态,但感觉我不能仅为 androidTests 覆盖“主要”AndroidManifest。
0赞 JonasVautherin 10/26/2023
好吧,它在测试库时可能会起作用(参见 stackoverflow.com/a/54090348/1368342),但就我而言,我正在测试一个应用程序。

答: 暂无答案