我将如何下载所有依赖于 robolectric 的 jar,以避免运行时下载并使其脱机?我需要使用 Robolectric.buildActivity(),它是 2.xx 版本的一部分。
对此有任何想法吗?
我将如何下载所有依赖于 robolectric 的 jar,以避免运行时下载并使其脱机?我需要使用 Robolectric.buildActivity(),它是 2.xx 版本的一部分。
对此有任何想法吗?
从 Robolectric 2.4 开始,他们添加了两个系统属性,以允许您告诉 Robolectric 测试运行器使用依赖项的本地副本。请参阅配置 Robolectric页面。
设置如下:
找出需要复制到dependencyDir 的文件的一种方法是运行gradlew testDebug -i
(或者可能使用-d
)并观察输出以查看在运行时正在下载哪些jar。然后将它们复制到构建机器上的已知位置。(查看您需要哪些文件的另一种方法是查看 SdkConfig.java 并获取其中提到的依赖 jar 及其依赖项。)
对于当前的 Robolectric 3.0-rc2,这些是它需要的文件:
将这些文件复制到已知位置,例如 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/')
}
}
这是我解决它的方法org.robolectric:robolectric:3.0
https://gist.github.com/kotucz/60ae91767dc71ab7b444
我将运行时依赖项下载到构建文件夹并配置测试以使用它 - 请参阅设置系统属性。
我也遇到了这个问题,发现原因是 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 对象的方法。
RobolectricTestRunner和MavenCentral的源代码可在 Robolectric 的 Github 页面上找到。
我使用了 Robolectric 3.0 版,依赖 jar 是从我的存储库下载的,而不是 sonatype。