我有一个项目使用 dynamic feature module ,并且我想通过 gradle 任务在功能模块中运行我的单元测试(出于我的 CI 目的):
./gradlew :feature_product:test
但它总是给我
NoClassDefFoundError
对于依赖于基础模块中的类的测试:com.example.android.feature.product.ProductViewTest > on vote change to negative FAILED
java.lang.NoClassDefFoundError: app.BaseView
ProductView
功能模块中的类扩展了 BaseView
从基本模块。奇怪的是,它在 Android Studio 中运行时成功,它工作正常。
然后,当我通过命令行运行和运行 Android Studio 时,我注意到日志中有一些不同之处。 Android Studio 中的第一行是
generateDebugSources
,当我运行 ./gradlew test
时不存在的东西Executing tasks: [:lib_ui:generateDebugSources, ...]
我该如何解决? Android Studio 是否有与提供的命令不同的命令
./gradlew test
当我按 Ctrl+Shift+R 时?
最佳答案
在进一步搜索这个问题后,我发现它也在 android-test 中报告。和 app-bundle-samples项目,还有一个issue在问题跟踪器中。
事实证明,根据 issue tracker 中的评论,Android Gradle 插件 4.1.0 中已修复此问题。 .
如果您不想将 AGP 更新到仍处于 alpha 阶段的 4.1.0,请将其添加到功能模块的 build.gradle 为我解决了这个问题,根据 comment :
testRuntimeOnly(files("$projectDir/../b_app/build/intermediates/app_classes/debug/classes.jar"))
关于android - 使用 Gradle 任务运行单元测试时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56766795/