相关疑难解决方法(0)

如何仅为我的UI测试项目添加其他Android权限?

InstrumentationTestCase2为了纯粹的测试目的,我尝试在派生的测试用例中将文件写入外部SD卡.当在被测应用程序android.permission.WRITE_EXTERNAL_STORAGEAndroidManifest.xml文件中配置时,这很有效,但如果此设置仅出现在AndroidManifest.xml测试项目的文件中,则不起作用.

当然,我不想将此权限添加到主清单中,因为我在功能测试期间只需要此功能.我怎样才能做到这一点?

testing android

27
推荐指数
2
解决办法
9850
查看次数

androidTest AndroidManifest.xml被忽略了

我有同样的问题,在这篇文章中没有检测到AndroidTest Manifest权限

并且这个帖子中的androidManifest在androidTest目录中被忽略了

- >如果我把测试清单中androidTest,debugAndroidTest,androidTestDebug,它从来没有被拾起和合并.

关于将AndroidManifest.xml放入debug文件夹的答案是正确的; 这似乎确实有效.(将测试清单放入src/debug

我想知道的是为什么你不能把它放在androidTest目录中?我试图弄清楚这一点时所阅读的所有文档都让你听起来像是应该的,如果你不能那么我就会认为这听起来像清单合并中的一些错误.

对于它的价值,我正在使用Android Studio

android android-manifest android-testing

11
推荐指数
1
解决办法
1101
查看次数

如何使 android:usesCleartextTraffic="true" 仅用于仪器测试?

我使用RESTMock我的仪器测试,但只有当我设置工作usesCleartextTraffictrue在我的清单。不过,我只希望仪器测试也是如此。有没有办法做到这一点?

我尝试在androidTest文件夹中创建一个新的清单文件。测试运行,但它们像usesCleartextTraffic仍然一样失败false

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

    <application android:usesCleartextTraffic="true" />

</manifest>
Run Code Online (Sandbox Code Playgroud)

我知道 RESTMock 从版本 0.3.2 开始支持 https,但我宁愿不必处理它。我实际上遵循了他们的指南,最终得到了 OkHttp3 的这个错误:

java.lang.AssertionError: java.security.NoSuchAlgorithmException: The BC provider no longer provides an implementation for KeyPairGenerator.RSA. Please see https://android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.html for more details.

有任何想法吗?


编辑:

我按照这个答案并将我创建的这个清单移动到debug源文件夹,然后它就可以工作了。现在该android:usesCleartextTraffic="true"选项仅适用于我的调试版本,由仪器测试使用,因此它可以工作,但它仍然不是正确的解决方案。

android android-espresso mockwebserver android-instrumentation

11
推荐指数
1
解决办法
7377
查看次数

运行模块的仪器测试时禁用 Firebase 初始化

我有一个多模块项目。我希望能够分别运行我为这些模块编写的仪器测试。当我运行测试并初始化活动时,我不断遇到以下错误。

默认 FirebaseApp 在此过程中未初始化。确保首先调用 FirebaseApp.initializeApp(Context)。

我尝试在测试代码中使用测试应用程序的上下文显式调用此函数,但无济于事。我知道 firebase 是通过配置文件设置的,但我没有明确调用它来设置它。在实际应用程序启动之前,它会通过内容提供商(阅读博客)自动初始化。

因为这将是一个静态调用,并且我们没有显式调用它,所以我也看不到模拟它的方法。有没有办法在我的模块中完全禁用 UITest 运行的 firebase ?

android gradle firebase android-instrumentation

7
推荐指数
1
解决办法
1348
查看次数

更改 androidTest 清单中的 manifestPlaceholders

我有服务的清单占位符:

<service
        android:name=".MyService"
        android:process="${processName}">
Run Code Online (Sandbox Code Playgroud)

在我的 build.gradle 中我替换了它。

android {  
    defaultConfig {
        manifestPlaceholders = [
                processName: ':Proc'
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

但对于我的浓缩咖啡测试(androidTest),我需要processName. 我怎样才能做到这一点?

我尝试使用 buildTypes 执行此操作,但它不起作用(BuildType 名称不能以“androidTest”开头)

android android-espresso

6
推荐指数
1
解决办法
1914
查看次数

fragmentScenario Espresso 测试动态功能模块中的 Fragment

有没有人想出如何使用 fragmentScenario Espresso 测试(应用程序的 Activity 位于基本模块中)单独测试动态功能模块中的片段。

我已经克服了几个问题,例如关于样式不是 Theme.Appcompat 和 Android Studio 没有运行的withId抱怨,但现在在运行时抱怨它R.id在片段的布局中找不到。

android android-fragments android-studio android-espresso dynamic-feature-module

6
推荐指数
1
解决办法
152
查看次数