1

我将如何下载所有依赖于 robolectric 的 jar,以避免运行时下载并使其脱机?我需要使用 Robolectric.buildActivity(),它是 2.xx 版本的一部分。

对此有任何想法吗?

4

4 回答 4

2

从 Robolectric 2.4 开始,他们添加了两个系统属性,以允许您告诉 Robolectric 测试运行器使用依赖项的本地副本。请参阅配置 Robolectric页面。

设置如下:

  • robolectric.offline - 设置为 true 以禁用运行时获取 jars
  • robolectric.dependency.dir - 在离线模式下,指定包含运行时依赖项的文件夹

找出需要复制到dependencyDir 的文件的一种方法是运行gradlew testDebug -i(或者可能使用-d)并观察输出以查看在运行时正在下载哪些jar。然后将它们复制到构建机器上的已知位置。(查看您需要哪些文件的另一种方法是查看 SdkConfig.java 并获取其中提到的依赖 jar 及其依赖项。)

对于当前的 Robolectric 3.0-rc2,这些是它需要的文件:

  • 可访问性测试框架 1.0.jar
  • android-all-5.0.0_r2-robolectric-1.jar
  • icu4j-53.1.jar
  • json-20080701.jar
  • robolectric-annotations-3.0-rc2.jar
  • robolectric-resources-3.0-rc2.jar
  • robolectric-utils-3.0-rc2.jar
  • shadows-core-3.0-rc2.jar
  • sqlite4java-0.282.jar
  • tagsoup-1.2.jar
  • vtd-xml-2.11.jar

将这些文件复制到已知位置,例如 say /home/jenkins/robolectric-files/,然后使用以下内容编辑您build.gradle的文件:

afterEvaluate {
    project.tasks.withType(Test) {
        systemProperties.put('robolectric.offline', 'true')
        systemProperties.put('robolectric.dependency.dir', '/home/jenkins/robolectric-files/')
    }
}
于 2015-05-14T02:19:53.800 回答
2

这是我解决它的方法org.robolectric:robolectric:3.0

https://gist.github.com/kotucz/60ae91767dc71ab7b444

我将运行时依赖项下载到构建文件夹并配置测试以使用它 - 请参阅设置系统属性。

于 2015-10-06T14:34:29.473 回答
1

我也遇到了这个问题,发现原因是 org.robolectric.Testrunner 创建了一个 org.robolectric.MavenCentral 对象,该对象使用 Internet-url(Robolectric 2.3-release)声明了一个 Maven 存储库。离线构建将无法访问该 url。

就我而言,我需要使用 Maven 存储库代理,因此我将指向http://oss.sonatype.org的 url 替换为本地 Maven 存储库代理。这意味着将 RobolectricTestRunner 子类化为 org.robolectric.MyRobolectricTestRunner,并创建一个自定义 MavenCentral 对象供其使用,并覆盖 RobolectricTestRunner 引用其私有 MAVEN_CENTRAL 对象的方法。

RobolectricTestRunnerMavenCentral的源代码可在 Robolectric 的 Github 页面上找到。

于 2014-05-27T09:26:30.180 回答
0

我使用了 Robolectric 3.0 版,依赖 jar 是从我的存储库下载的,而不是 sonatype。

于 2016-03-10T19:32:57.673 回答