【问题标题】:Robolectric test hangs up when started - Transferring from sonatypeRobolectric 测试开始时挂断 - 从 sonatype 转移
【发布时间】:2017-10-16 07:34:55
【问题描述】:

我在项目中配置 Robolectric 时遇到问题。如果重要的话,我也在使用 Kotlin。

这是我的 build.gradle

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

android {
compileSdkVersion 26


testOptions {
    unitTests {
        includeAndroidResources = true
    }
}
sourceSets {
    test.java.srcDirs += ['build/generated/source/apt/test/debug']
}

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

}

ext.daggerVersion = '2.11'
ext.roomVersion = '1.0.0-alpha9'

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'

kaptTest "com.google.dagger:dagger-compiler:$daggerVersion"
testImplementation 'junit:junit:4.12'
testImplementation "org.robolectric:robolectric:3.4.2"
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

// RxJava
implementation 'io.reactivex.rxjava2:rxjava:2.1.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

// Room
implementation "android.arch.persistence.room:runtime:$roomVersion"
implementation "android.arch.persistence.room:rxjava2:$roomVersion"
kapt "android.arch.persistence.room:compiler:$roomVersion"
compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.51"
androidTestImplementation "android.arch.persistence.room:testing:$roomVersion"

//DAGGER
implementation "com.google.dagger:dagger:$daggerVersion"
implementation "com.google.dagger:dagger-android:$daggerVersion"
implementation "com.google.dagger:dagger-android-support:$daggerVersion"
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
kapt "com.google.dagger:dagger-android-processor:$daggerVersion"

//Jackson
implementation 'com.fasterxml.jackson.core:jackson-core:2.9.1'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.1'

}

repositories {
mavenCentral()

}

当我运行测试时,它挂断并在控制台上显示消息:

从位于https://oss.sonatype.org/content/groups/public/ 的存储库 sonatype 下载:org/robolectric/android-all/o-preview-4-robolectric-0/android-all-o-preview-4-robolectric-0.jar 从 sonatype 传输 68498K

我等了大约 10 到 15 分钟,仍然没有。

【问题讨论】:

    标签: android android-gradle-plugin robolectric robolectric-gradle-plugin


    【解决方案1】:

    我等了 30 分钟才下载。我也在 3.0 版上试过这个 - 是同样的问题,但下载速度稍快。

    我在这里提出了一个问题:https://github.com/robolectric/robolectric/issues/3452

    也许有办法提高下载速度之类的。

    【讨论】:

    • 我遇到了同样的问题,但为什么这是公认的答案,因为它没有提供官方解决方案?
    • 我认为解决方案只是等待,由于某种原因下载速度非常慢
    【解决方案2】:

    受 K.Os 的启发,我从 Robolectric doc(http://robolectric.org/configuring/) 中找到了一种指定 maven 存储库的方法。

    通过设置代理或镜像maven repo,并更改systemProperty。从内部网络访问图书馆所需的时间更少。

        android {
          testOptions {
            unitTests.all {
              systemProperty 'robolectric.dependency.repo.url', 'https://local-mirror/repo'
              systemProperty 'robolectric.dependency.repo.id', 'local'
            }
          }
        }
    

    它对我有用,因为 CI 管道任务始终在机器上运行,互联网访问受到安全策略的限制。当 Robolectric 尝试从默认的 maven url 下载其依赖项时,可能会导致卡住。

    我也向https://github.com/robolectric/robolectric/issues/3452 提交了相同的答案。

    【讨论】:

      【解决方案3】:

      将它添加到 build.gradle 为我解决了这个问题:

      android{
          ...
      
          // Add these lines
          testOptions {
              unitTests {
                  includeAndroidResources = true
              }
          }
      }
      

      【讨论】:

        【解决方案4】:

        可能是网络延迟/连接问题,取决于国家/地区或其他网络问题。 有同样的问题,网络监视器显示 ~200kbs 网络下载活动。

        启用 VPN 后,它会显示 ~100Mbs 的网络活动,需要几秒钟才能从 sonatype 下载。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-14
          • 2014-03-09
          • 1970-01-01
          • 2015-05-06
          • 1970-01-01
          • 2013-08-04
          • 1970-01-01
          相关资源
          最近更新 更多