2

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

我将 DFM 的测试androidTest放在里面的源集中:feature

当我尝试使用 Android Studio 创建的运行配置启动测试时,它会以Test framework quit unexpectedly.

如果我使用 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 做到这一点?

4

2 回答 2

3

在升级到 AGP 7 和最新的 Android Studio 之后,我也遇到了这个问题。就我而言,它有点不同,我有两次检出同一个存储库,所以同时在 2 个分支上工作。在我的情况下,碰巧一个分支 + android studio 实例可以工作,它确实选择了正确的 TestRunner,而另一个实例没有工作。这使我得到了以下简单的解决方案:

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

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

  • 确保我使用 Java 11(因为我在 AGP 7 上)
    • Project Structure-> Gradle settings->Gradle JDK应该类似于 11
  • 禁用实验功能Do not build Gradle task list during Gradle sync(在 Android Studio 北极狐上自动启用)
于 2021-09-06T16:03:30.917 回答
1

我遇到过同样的问题。原来 gradle在 androidTest APKtargetPackage的动态功能模块的 <instrumentation> 标记中创建了一个错误。AndroidManifest.xml您可以通过testApplicationId在模块的 build.gradle defaultConfig 中设置来解决此问题。

defaultConfig {    
    testApplicationId 'com.amazing.feature.test' // Set the test package here!
    testInstrumentationRunner 'com.amazing.feature.TestRunner'
    [...]
}

developer.android.com 上有关此的更多文档

于 2021-12-02T23:01:21.240 回答