Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序模块中JUnit测试中类的java.lang.ClassNotFoundException_Java_Android_Gradle_Kotlin_Junit - Fatal编程技术网

Android应用程序模块中JUnit测试中类的java.lang.ClassNotFoundException

Android应用程序模块中JUnit测试中类的java.lang.ClassNotFoundException,java,android,gradle,kotlin,junit,Java,Android,Gradle,Kotlin,Junit,我正在开发一个基础:app模块和多个相关模块 :app模块包含一些共享的业务逻辑和模型,包括在每个模块(UI的不同部分)中显示不同的DisplayItem模型 在我通过命令行在模块中运行单元测试之前,所有这些都可以正常工作。当我通过Gradle包装器运行测试时,当尝试在测试中加载DisplayItem类时,模块中的测试失败,出现ClassNotFoundException com.me.news.NewsViewModelTest > initializationError FAILED

我正在开发一个基础
:app
模块和多个相关模块

:app
模块包含一些共享的业务逻辑和模型,包括在每个模块(UI的不同部分)中显示不同的
DisplayItem
模型

在我通过命令行在模块中运行单元测试之前,所有这些都可以正常工作。当我通过Gradle包装器运行测试时,当尝试在测试中加载
DisplayItem
类时,模块中的测试失败,出现
ClassNotFoundException

com.me.news.NewsViewModelTest > initializationError FAILED
    java.lang.NoClassDefFoundError
        Caused by: java.lang.ClassNotFoundException
我不明白的是,为什么这些测试在androidstudio中运行得很好,一切都按照预期进行编译和解析,但当从命令行运行时,它们失败了。我怀疑androidstudio正在做一些事情来在运行时获取这些类,而这并不是单独使用Gradle包装器就能实现的,但我不知道是什么


关于是什么导致了这个错误,Android Studio可能在做什么,以及我如何解决我的Gradle构建/项目以解决这些问题,有什么想法吗?

将这一行添加到你的应用程序build.Gradle类中。这对我来说很好

testRuntimeOnly(文件(“${project.rootDir}/FEATURE\u MODULE\u NAME/mediates/app\u classes/nonprodebug/classes.jar”))


我也有同样的问题,你找到解决办法了吗?没有直接的解决办法。我们最终重新设计了我们的应用程序,将Android库用于功能模块,而不是动态功能模块。所以现在每个特性库都有自己的测试和构建管道。需要将共享逻辑抽象到它自己的核心模块中,这有点颠覆了我的依赖关系图,但它工作得很好。