如何下载所有robolectric依赖jar,以避免运行时下载并使其脱机?我需要使用Robolectric.buildActivity(),它是2.x.x版本的一部分。
对此有何看法?
答案 0 :(得分:2)
从Robolectric 2.4开始,他们添加了两个系统属性,允许您告诉Robolectric测试运行器使用依赖项的本地副本。请参阅Configuring Robolectric页面。
设置为:
确定需要复制到dependencyDir的文件的一种方法是运行gradlew testDebug -i
(或者可能使用-d
)并观察输出以查看在运行时下载哪些jar文件。然后将它们复制到构建计算机上的已知位置。 (另一种查看所需文件的方法是查看SdkConfig.java并获取其中提到的依赖项jar及其依赖项。)
对于当前的Robolectric 3.0-rc2,这些是它需要的文件:
将这些文件复制到已知位置,例如说/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/')
}
}
答案 1 :(得分:2)
以下是我为org.robolectric:robolectric:3.0
https://gist.github.com/kotucz/60ae91767dc71ab7b444
我将运行时依赖项下载到build文件夹中并配置测试以使用它 - 请参阅设置系统属性。
答案 2 :(得分:1)
我也有这个问题,并找到了原因是org.robolectric.Testrunner创建了一个org.robolectric.MavenCentral对象,该对象使用Internet-url(Robolectric 2.3-release)声明了一个Maven存储库。脱机版本将无法访问该URL。
在我的情况下,我需要使用Maven存储库代理,因此我用我的本地Maven存储库代理替换了指向http://oss.sonatype.org的url。这意味着将RobolectricTestRunner子类化为org.robolectric.MyRobolectricTestRunner,并为其创建自定义MavenCentral对象,并覆盖RobolectricTestRunner引用其私有MAVEN_CENTRAL对象的方法。
RobolectricTestRunner和MavenCentral的源代码可在Robolectric的Github页面上找到。
答案 3 :(得分:0)
我使用了Robolectric版本3.0,并且从我的存储库下载了依赖jar,而不是sonatype。