android - 使用 Gradle 任务运行单元测试时出现 NoClassDefFoundError

标签 android unit-testing android-studio gradle junit

我有一个项目使用 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 时,我注意到日志中有一些不同之处。 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/

相关文章:

java - httpClient.execute(httpget, responseHandler) 中的 ClientProtocolException

android - 如何使用 android api V2 在 GoogleMap 上绘制数千个正方形

unit-testing - 我应该将 Eclipse 插件片段的测试代码放在哪里?

android-studio - 安卓工作室 : triple selection of png files

android - Android Studio 中的资源文件夹不可见

android - 手动将素材 Datetime Picker 库添加到 android studio

java - android.util.Log#println_native() 中有什么?

java - Firebase 引用对象无法解析为类型

unit-testing - 如何在测试失败时自动通知测试所有者?

java - 如何为这些类型的方法编写单元测试?