多模块android项目中的共享测试类
我有一个应用程序开发的清洁架构与多个模块。考虑下面的包结构。多模块android项目中的共享测试类,android,kotlin,android-gradle-plugin,clean-architecture,Android,Kotlin,Android Gradle Plugin,Clean Architecture,我有一个应用程序开发的清洁架构与多个模块。考虑下面的包结构。 app src |--> main |--> test |--> test classes that access shared test classes from common-test like mainCoroutineRue data src |--> main |--> test |--> test cla
app
src
|--> main
|--> test
|--> test classes that access shared test classes from common-test like mainCoroutineRue
data
src
|--> main
|--> test
|--> test classes that access shared test classes from common-test like FakeDispatcher
common-test
src
|--> main
|--> MainCorotineRule
|--> FakeDispatcher
|--> test
以下是gradle文件代码:
应用程序:
数据:
plugins{
id 'java-library'
id 'kotlin'
}
dependencies{
testImplemenation project(path:':common-test',configuration:'default')
}
普通测试:
plugins{
id 'com.android.library'
id 'kotlin-android'
}
dependecies{
implementation "androidx.arch.core:core-testing:1.1.1"
//test classes
//implementation junit
//impementation coroutine-test
//mockk
}
现在的问题是,我能够成功地访问应用程序测试类中的MainCoroutineRule类,但在我运行测试时,我无法访问公共测试中的类(即FakeDispatcher)到数据模块的测试文件夹,尽管编译时它从公共测试中导入了正确的类。
它抛出的错误是“未解析的引用”
请告诉我遗漏了什么?根据我的经验,我无法成功创建用于测试目的的aar(android库),这可能是您这里的主要问题。android库(aar)和java库(jar)之间存在单向兼容性。你可以在aar中加入罐子,但你不能反过来做
如果您的测试不需要aar(基本上您不需要任何与android资源相关的东西),我建议您将测试库更改为java插件。如果您需要Android类的引用,您可以随时导入Android的源代码,类似于robolectric所做的工作我编辑了我的问题。因此,基本上我需要一些与android相关的基本测试类和它们的lib,比如“android.arch.core:core testing:1.1.1”,这是一个更新。你是对的,看看核心测试库,它是一个aar,所以我建议你把你的测试模块分为通用测试和android测试,使用android的通用测试,包括android特定的代码,并保持java专用代码的独立性和所有模块的可重用性
plugins{
id 'com.android.library'
id 'kotlin-android'
}
dependecies{
implementation "androidx.arch.core:core-testing:1.1.1"
//test classes
//implementation junit
//impementation coroutine-test
//mockk
}