【问题标题】:Android Gradle 1.1 Module Unit Test dependency on another Android Module in same ProjectAndroid Gradle 1.1 模块单元测试依赖于同一项目中的另一个 Android 模块
【发布时间】:2015-03-05 00:32:00
【问题描述】:

我有一个 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

我的模块本身编译良好。
我的问题与测试模块有关。 (仅供参考:我正在使用 Robolectric)

我看到了几个与 Android 构建和测试依赖项相关的“类似”问题,但我发现的问题似乎都没有问我在寻找什么:

这些问题要么是老问题,要么不是专注于使用 Android Gradle 1.1+ 内置的单元测试功能,要么不是真的那么相关。

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

"testCompile project(':module1')" 似乎不能解决问题。

我怀疑我想要:

  1. 将我依赖的其他模块编译为 .jar 文件
  2. 使用其他模块已经编译好的.class文件
  3. 从其他模块的 .aar 文件中提取 .class 文件
  4. 找到其他内置方法来执行此操作

在 Android/Gradle 构建过程中是否有一种巧妙的方法可以做到这一点?

我在这里遗漏了什么明显的东西吗?

谢谢!

Pv

【问题讨论】:

  • 能否提供每个模块中的“build.gradle”文件?谢谢。

标签: android android-studio gradle android-gradle-plugin robolectric


【解决方案1】:

秘诀是在你的 AndroidManifest.xml 旁边有 project.propertiestest-project.properties 文件

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

我在http://nenick-android.blogspot.de/2015/02/android-studio-110-beta-4-and.html 对此进行了更多解释,可以在https://github.com/nenick/AndroidStudioAndRobolectric/tree/library 找到一个现成的示例

【讨论】:

  • 太棒了!我试试看!
  • 我正在尝试您的解决方案,但在 org.robolectric.AndroidManifest$MetaData.init(AndroidManifest.java:736) 处得到一个奇怪的 java.lang.NullPointerException。 github.com/robolectric/robolectric/blob/robolectric-2.4/…我已经对你的博客文章发表了评论。
  • 感谢@nenick,您的解决方案基本上有效,但是清单中存在大量与元数据相关的 Robolectric 错误,因此我试图简化我正在尝试做的事情。无论如何,我都会为这个漂亮的把戏给你的功劳! :)
【解决方案2】:

如果您的测试模块依赖于纯 Java/非 Android 代码,另一种方法是提取一个新的 java-library 模块(构建 .jar 而不是 .aar 的模块)并依赖它。在这种情况下,单元测试可以正常运行。

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

【讨论】:

    猜你喜欢
    • 2018-03-13
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2017-03-02
    • 2015-04-05
    • 1970-01-01
    • 2021-09-12
    • 2016-08-20
    相关资源
    最近更新 更多