Naj*_*ahi 7 android unit-testing robolectric
我正面临 Robolectric 库的问题。我正在使用 Robolectric 编写单元测试,它在本地工作,但是当我合并我的代码时,它在管道上(远程)崩溃。我正在使用 'org.robolectric:robolectric:4.0.2' 它仅通过将此行添加到我的测试类而失败:@RunWith(RobolectricTestRunner.class)
例外是:
FAILED org.apache.tools.ant.BuildException 由以下原因引起:org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException
我遇到了同样的问题:Robolectric 在本地工作正常,但一旦推送到 Jenkins,执行测试的 gradle 任务就会失败。
您可以执行 gradle 任务来运行带有标志的测试-i -d,以查看更多调试输出。
./gradlew -i -d test
Run Code Online (Sandbox Code Playgroud)
对我来说,这表明 Jenkins 无法下载 Robolectric 依赖项:
13:58:43 13:58:42.904 [DEBUG] [TestEventLogger] com.my.package.Test > my_test_case STANDARD_ERROR
13:58:43 13:58:42.904 [DEBUG] [TestEventLogger] Downloading: org/robolectric/android-all/9-robolectric-4913185-2/android-all-9-robolectric-4913185-2.jar from repository sonatype at https://oss.sonatype.org/content/groups/public/
Run Code Online (Sandbox Code Playgroud)
我可以通过告诉 gradle 在 Jenkins 上运行时使用我们的公司代理来解决这个问题。实现此目的的一种方法是将以下内容添加到您的 gradle.properties 中:
systemProp.http.proxyHost=http://proxy.host
systemProp.http.proxyPort=3128
systemProp.https.proxyHost=http://proxy.host
systemProp.https.proxyPort=3128
Run Code Online (Sandbox Code Playgroud)
- -编辑- -
实际上,我为我的用例找到了一个更干净的解决方案,然后配置代理:Robolectric 提供了一种配置它在运行时使用的存储库的方法(请参阅http://robolectric.org/configuring/)。这样我就可以告诉它使用我们的公司存储库。
android {
testOptions {
unitTests.all {
systemProperty 'robolectric.dependency.repo.url', 'https://local-mirror/repo'
systemProperty 'robolectric.dependency.repo.id', 'local'
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3000 次 |
| 最近记录: |