是否需要将 gradle 与 roboelectric 一起用于 android 单元测试?

Is it necessary to use gradle with roboelectric for android unit testing?

我和我的团队已经建立了一个 android 图书馆项目。它建立在 eclipse 之上,但我们使用 ant 来构建它。目前我们没有使用 gradle。我有一个带有依赖项 jar 文件的 roboelectric。但是当我使用它时,运行 单元测试时,出现以下错误

WARNING: multiple versions of ant detected in path for junit 
[junit]          jar:file:/Users/prateekarora/Desktop/eclipse/plugins/org.apache.ant_1.9.2.v201404171502/lib/ant.jar!/org/apache/tools/ant/Project.class
[junit]      and jar:file:/Users/prateekarora/trunk/client/android/MCCMobileClient/test2/libs/robolectric-2.3-with-dependencies.jar!/org/apache/tools/ant/Project.class

当我从 eclipse 的插件文件夹中删除 apache ant 时,它停止工作。 谁能解释为什么会这样? 另外,gradle 是否需要使用 roboelectric?如果没有,我在哪里可以找到 roboelectric 的 jar 文件 with/without 依赖项?

gradle 和 robolectric 没有必要一起使用。它只是 运行 指定 java class(来自 junit)和正确的 class 路径(包括您的源代码、测试代码和依赖项)。通过 Whosebug 修复你的案例并不是一件容易的事(即使你坐在同一台电脑后面,这也会是一些挑战)。

以下是可能的解决方案:

  1. 将您的项目构建迁移到 gradle
  2. 继续使用 ant,但从依赖管理从手册 jars 转移到 ivy
  3. 继续使用 ant 和手动 jars 依赖项,但尝试使用除 ant one
  4. 之外的所有依赖项获取 robolectric.jar

第一个选项对我来说是最简单的选项。这需要稍微改变一下思维方式,但这只是 Google 正式支持的一种构建工具,还有很多示例和人员可以提供帮助。

第二个也要求你学习如何使用新工具。此外,关于常春藤使用的例子也较少,尤其是在 android 项目中。

第三个将需要编写自定义脚本以从 jar 文件中删除 ant 或重建 robolectric-all.jar 而无需一个(ant)依赖项。这将需要深入maven构建工具学习