为具有动态功能的 Android 项目创建单元和仪器测试

Create Unit and Instrumentation test for Android project with dynamic features

我有一个项目,其中有 main :app 包。除此之外,该应用程序在同一个包中包含两个动态功能::features:A 和 :features:B。

这里的问题是我无法 运行 单元和仪器测试(Espresso,UI Automator),因为以下错误:

“AAPT: error: resource string/app_name (aka com.app.A.test:string/app_name) not found.” 

当我 运行 测试(UI 测试在这种情况下)应用程序编译和工作没有任何问题。

我发现是manifest merging出错了,从complete error可以看出:

/Users/user/company/app/features/A/build/intermediates/tmp/manifest/androidTest/app/debug/manifestMerger7870721738992192959.xml:7:5-9:19: AAPT: error: resource string/app_name (aka com.app.A.test:string/app_name) not found.

库(上面日志中的 A 或 B)需要在测试变体的合并清单中找到的一些值。要修复它,您需要在动态特性中添加测试依赖 build.gradle:

dependencies {
    implementation project(":app")
    androidTestImplementation project(":app")
}