我有以下项目结构:

Main App
 --app
 --featureModule1
 --featureModule2
 --TestKit(Library module)
其中 Testkit 具有所有依赖项,包括 app 和 featureModules。 Testkit 包括与应用程序和功能模块中的功能相关的所有单元测试。
当我从 Android Studio 运行单元测试时(右键单击-> 在 Testkit 中运行测试),它们运行良好。但是,每当我尝试从 gradle 命令运行它时: ./gradlew TestKit:testInternalDebugUnitTest ,它会为其他模块的所有依赖项(对于应用程序和功能模块)抛出 NoClassDefFoundError
此外,我已经在测试模块中添加了所有模块的 implementation 和 testImplementation 依赖项。
请建议:
  • 我是否需要添加在其他模块中生成的类的路径,如果是,请指导在哪里。
  • 也运行 Test with Coverage 失败
    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

    10-08 18:36