在我的项目中,我使用dynamic feature module,并且我想通过命令行在功能模块中运行单元测试(出于CI的目的),我使用此命令运行
./gradlew :feature_product:test
但是它总是给我这个错误,不仅在此功能上,而且总是给我NoClassDefFoundError
。
com.example.android.feature.product.ProductViewTest > on vote change to negative FAILED
java.lang.NoClassDefFoundError at ProductViewTest.kt:219
奇怪的是,它在Android Studio中运行成功,并且运行正常。
然后,当我通过命令行运行和运行Android Studio时,我注意到日志中有一些不同之处。 Android Studio中的第一行是generateDebugSources
,当我运行./gradlew test
Executing tasks: [:lib_ui:generateDebugSources, ...]
该如何解决?当我按下Ctrl + Shift + R时,Android Studio是否与提供的命令./gradlew test
有不同的命令?
答案 0 :(得分:4)
进一步搜索此问题后,我发现它也在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"))
答案 1 :(得分:0)
如果您认为这是一项丢失的任务,则应按以下方法先调用它:
./gradlew :lib_ui:generateDebugSources :feature_product:test
即使有必要,我什至会继续研究assemble
依赖项,尽管这可能会花费更多时间:
./gradlew :lib_ui:assemble :feature_product:assemble :feature_product:test