4

我有以下项目结构:

Main App
 --app
 --featureModule1
 --featureModule2
 --TestKit(Library module)

其中 Testkit 具有所有依赖项,包括 app 和 featureModules。Testkit 包括与应用程序和功能模块中的功能相关的所有单元测试。

当我从 Android Studio 运行单元测试时(右键单击-> 在 Testkit 中运行测试),它们运行良好。但是,每当我尝试从 gradle command: 运行它时./gradlew TestKit:testInternalDebugUnitTest,它都会抛出NoClassDefFoundError其他模块的所有依赖项(对于应用程序和功能模块)。

此外,我已经在测试模块中添加了所有模块的实现和 testImplementation 依赖项。

请建议:

  1. 我是否需要添加在其他模块中生成的类的路径,如果是,请指导在哪里。

  2. 运行覆盖率测试也失败了

    java.lang.VerifyError:错误的返回类型

请建议我在这里做错了什么。

注意: 我创建了一个测试套件,因为 Roboelectric 在功能模块中存在多个未解决的问题,例如:https ://github.com/robolectric/robolectric/issues/5428

版本 AS:4.0.1 gradle:4.0.1 gradle-wrapper:6.5 Robolectric:4.3.1

4

1 回答 1

2

我能够使用以下运行时测试依赖项解决问题:

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

于 2020-09-03T04:46:52.463 回答