Android Gradle 1.1模块单元测试依赖于同一项目中的另一个Android模块

Android Gradle 1.1模块单元测试依赖于同一项目中的另一个Android模块,android,android-studio,gradle,android-gradle-plugin,robolectric,Android,Android Studio,Gradle,Android Gradle Plugin,Robolectric,我有一个Android Gradle 1.1项目,其中有几个模块对其他模块有一些依赖性 Project ├ Module2 │ ├ src/main: imports classes from Module1 │ └ src/test: imports classes from Module1, tests Module2/src/main └ Module1 ├ src/main: implements classes needed by Module2/src/main & Mo

我有一个Android Gradle 1.1项目,其中有几个模块对其他模块有一些依赖性

Project
├ Module2
│ ├ src/main: imports classes from Module1
│ └ src/test: imports classes from Module1, tests Module2/src/main
└ Module1
  ├ src/main: implements classes needed by Module2/src/main & Module2/src/test
  └ src/test: tests Module1/src/main
我的模块本身编译得很好。
我的问题与测试模块有关。 (仅供参考:我使用的是机器人分子)

我见过几个与Android构建和测试依赖性相关的“类似”问题,但我发现的问题中似乎没有一个是问我在寻找什么:

这些问题要么是老问题,不注重使用Android Gradle 1.1+内置单元测试功能,要么不是很相关

我想问的是:“一个[java编译的?]单元测试如何在同一个项目中导入另一个android模块(通常是一个.aar文件?

“testCompile项目(':module1')”似乎不起作用

我怀疑我想:

  • 将我所依赖的另一个模块编译为.jar文件
  • 使用其他模块已编译的.class文件
  • 从其他模块的.aar文件中提取.class文件
  • 找到其他内置的方法来实现这一点
  • 在Android/Gradle构建过程中是否有一种巧妙的方法来实现这一点

    我是不是漏掉了什么明显的东西

    谢谢


    Pv

    秘诀是在您的AndroidManifest.xml旁边有
    project.properties
    test project.properties
    文件

    test project.properties
    插入所有分解的aar资源路径(例如
    android.library.reference.3=../../build/intermediates/分解的aar/AndroidStudioAndRobolectric/core/unspecified


    我在上对此进行了详细解释,在上可以找到一个现成的示例。如果您的测试模块依赖于纯Java/非Android代码,另一种方法是提取一个新的Java库模块(构建.jar而不是.aar的模块)并依赖于此。在这种情况下,单元测试可以正常运行


    (可能对原始海报没有太大帮助,因为他们使用的是Robolectric,但仍然)

    您能在每个模块中提供“build.gradle”文件吗?谢谢,太棒了!我要试试看!我正在尝试您的解决方案,但在org.roblectric.AndroidManifest$MetaData.init(AndroidManifest.java:736)上得到了一个奇怪的java.lang.NullPointerException。我在你的博客文章中发表了一条评论。谢谢@nenick,你的解决方案基本上是可行的,但是清单中有大量与元数据相关的机器人分子错误,所以我尝试简化我正在尝试的工作。不管怎样,我都会相信你的妙计!:)