Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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项目中的共享测试类_Android_Kotlin_Android Gradle Plugin_Clean Architecture - Fatal编程技术网

多模块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
}