android - 如何通过 Android Studio 对动态功能模块执行 UI 测试?

标签 android gradle dynamic-feature-module

我有一个常规的 :app 模块和一个 DFM :feature

我将 DFM 的测试放在 :feature 内的 androidTest 源集中。

当我尝试使用 Android Studio 创建的运行配置启动测试时,它会默默失败,并显示测试框架意外退出

如果我使用 Android Studio 在 Run 选项卡中显示的命令通过终端启动测试,我将看到:

$ adb shell am instrument -w -m    -e debug false -e class 'com.amazing.feature.AmazingTest' com.amazing.application.test/com.amazing.feature.TestRunner
...
Unable to find instrumentation info for: ComponentInfo{com.amazing.application.test/com.amazing.feature.TestRunner}

这并不奇怪,因为通往运行者的路径是不同的:

$ adb shell pm list instrumentation
instrumentation:com.amazing.feature.test/com.amazing.feature.TestRunner (target=com.amazing.application)

如果我在命令行上使用该检测,则测试有效。

有没有办法教 Android Studio 这样做?

最佳答案

升级到 AGP 7 和最新的 Android Studio 后,我也遇到了这个问题。就我而言,情况有点不同,我将同一个存储库 check out 两次,因此同时在 2 个分支上工作。就我而言,碰巧一个分支+ android studio 实例可以工作,它确实选择了正确的 TestRunner,而另一个实例则不起作用。这让我找到了一个简单的解决方案:

  1. 构建 -> 清理项目
  2. 删除所有剩余的构建文件夹(对我来说只有 1 个)

然后重试,它确实选择了正确的 TestRunner。 我尝试过的其他方法(我不知道它们是否有帮助)如下:

  • 确保我使用 Java 11(因为我使用的是 AGP 7)
    • 项目结构 -> Gradle 设置 -> Gradle JDK 应该类似于 11
  • 禁用实验性功能在 Gradle 同步期间不构建 Gradle 任务列表(在 Android Studio Arctic Fox 上自动启用)

关于android - 如何通过 Android Studio 对动态功能模块执行 UI 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66578888/

相关文章:

android - Recyclerview 每 x 秒更新几行

gradle - 使用build参数控制gradle运行时依赖项

android - 如果没有 @Provides 注释方法,则无法提供。公共(public)抽象静态类 ApplicationC 实现 MyApplication_GeneratedInjector,

apache - 无法解析XSLFImageRendener和XSLFRenderingHint

android - Android Studio 3.1.3.2中的Gradle构建错误

android - 未安装动态功能模块

android - 带有 appbundle 和 PROGUARD 的动态功能不起作用

android - TextView设置文本问题

java - 如何在Java中对不同数字的字符串进行正确排序?

android - ADB 拒绝 shell 命令 (ls -l) : closed