我有以下项目结构:
Main App
--app
--featureModule1
--featureModule2
--TestKit(Library module)
其中 Testkit 具有所有依赖项,包括 app 和 featureModules。 Testkit 包括与应用程序和功能模块中的功能相关的所有单元测试。当我从 Android Studio 运行单元测试时(右键单击-> 在 Testkit 中运行测试),它们运行良好。但是,每当我尝试从 gradle 命令运行它时:
./gradlew TestKit:testInternalDebugUnitTest
,它会为其他模块的所有依赖项(对于应用程序和功能模块)抛出 NoClassDefFoundError
。此外,我已经在测试模块中添加了所有模块的 implementation 和 testImplementation 依赖项。
请建议:
java.lang.VerifyError:错误的返回类型
请建议我在这里做错了什么。
注意:
由于 Roboelectric 在功能模块中存在多个 Unresolved 问题,我创建了一个 Testkit,例如:https://github.com/robolectric/robolectric/issues/5428
版本
AS:4.0.1
等级:4.0.1
gradle 包装器:6.5
Robolectric:4.3.1
最佳答案
我能够使用以下运行时测试依赖项解决问题:
testRuntimeOnly(files("${projectDir}/../app/build/intermediates/app_classes/internalDebug/classes.jar"))
testRuntimeOnly(files("${projectDir}/../featureModule1/build/intermediates/app_classes/internalDebug/classes.jar"))
testRuntimeOnly(files("${projectDir}/../featureModule2/build/intermediates/app_classes/internalDebug/classes.jar"))
Testkit 的 build.gradle 里面。更详细的可以引用以下链接:https://github.com/android/app-bundle-samples/issues/11#issuecomment-675725610