robolectric依存ライブラリダウンロードピットレコード

3922 ワード

robolectric依存ライブラリダウンロード各種踏み穴。。。


1.gradlew test運転ユニットのテスト例のエラーは以下の通りである:org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException
com.tencent.next.MainActivityTest > testActivity FAILED
    org.apache.tools.ant.BuildException
        Caused by: org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException

追加–infoパラメータは、特定のエラー情報を表示し、依存ライブラリファイルのダウンロードに失敗したことを示します.接続がタイムアウトし、70%の進捗状況に詰まっているかどうかを示します.
com.tencent.next.MainActivityTest > testActivity STANDARD_OUT
    [WARNING] Unable to get resource 'org.robolectric:android-all:jar:5.0.0_r2-robolectric-1' from repository central (http://repo1.maven.org/maven2): Error transferring file: Connection timed out: conne
ct
com.tencent.next.MainActivityTest > testActivity STANDARD_ERROR
    Downloading: org/robolectric/shadows-core-v21/3.1.4/shadows-core-v21-3.1.4.jar from repository sonatype at https://oss.sonatype.org/content/groups/public/
    Error transferring file: Connection timed out: connect
com.tencent.next.MainActivityTest > testActivity STANDARD_OUT
    [WARNING] Unable to get resource 'org.robolectric:shadows-core-v21:jar:3.1.4' from repository sonatype (https://oss.sonatype.org/content/groups/public/): Error transferring file: Connection timed out
: connect

解決プロセス:
  • 手動でダウンロードし、対応するディレクトリの下にC:Usersユーザー名を置く.gradle\caches\modules-2\files-2.1\org.robolectric、しかし依然として探し出せなくて、またcheck sha値が書き間違えたのではないか、つらいシイタケ;
  • そしてbuild.gradleに依存を配置して、gradleにダウンロードさせて、ダウンロードして帰ってくることができて、C:Usersユーザー名.gradle\caches\modules-2\files-2.1\org.robolectricディレクトリの下にもjarパケットが対応する、実行は依然として接続タイムアウトなどのエラーを報告し、robolectricは明らかに認識していないように見える~/.gradle/の勘定.robolectric依存ローカルディレクトリはgradle依存ローカルディレクトリとは異なると結論した.
  • robolectricの依存ライブラリは、ローカルにC:Users{ユーザー名}.m 2repositoryorgrobolectricですが、私はずっとgradleを使っていて、mavenを構成していません.やってみたいのですが、このようにするのは弊害があり、他の同僚も私の問題に直面します.それは誰もが配置する必要があります.コストが高すぎます.放棄
  • の前にantでrobolectricユニットをコンパイルしてテストするとき、自分でjarパッケージをダウンロードして、ライブラリのディレクトリを指定すればいいので、この考え方に沿って調べて、解決方法を見つけました.
  • はbuild.gradleディレクトリの構成は、次の
     testOptions {
         unitTests.all {
             systemProperty 'robolectric.offline', 'true'
             systemProperty 'robolectric.dependency.dir', 'C:\\Users\\cicichang\\.gradle\\caches\\modules-2\\files-2.1\\org.robolectric\\android-all\\5.0.0_r2-robolectric-1\\7c63cd7aeb55d63e3e208b77882831c7ac588ed8'
         }
     }
    
  • です.
    robolectric.offline//trueに設定jarパッケージの動的取得robolectricを閉じます.dependency.dir//offlineモードの場合、実行時依存robolectricを含むフォルダを指定します.enabledSdks//カンマで区切られたsdklevelまたは名前のリストは、プロセスで使用可能であり、実行時にリストで指定されたsdkのみをテストします.デフォルトでは、すべてのsdkが使用可能なrobolectricです.dependency.repo.id//実行時依存にmaven依存ライブラリのid(デフォルトはsonatype)robolectricを設定.dependency.repo.url//mavenライブラリurlの設定(デフォルト)https://oss.sonatype.org/content/groups/public/) rebolectric.logging.enabled//trueに設定してデフォルトのlogging 6を開きます.gradlw testの実行に成功しました
    付録:1.在build.gradleでの構成
    dependencies {
        testImplementation "org.robolectric:robolectric:$rootProject.ext.robolectricVersion"
        testImplementation "org.robolectric:robolectric-annotations:$rootProject.ext.robolectricVersion"
        testImplementation:org.robolectric:android-all:5.0.0_r2-robolectric-1'
        testImplementation "org.robolectric:robolectric-annotations:$rootProject.ext.robolectricVersion"
        testImplementation "org.robolectric:shadows-support-v4:$rootProject.ext.robolectricVersion"
    }
    

    robolectricVersionはルートディレクトリのbuild.gradleでの構成
    ext {
            robolectricVersion = '3.1.4'
        }    
    

    注意:testImplementation:org.robolectric:android-all:5.0.0_r 2-robolectric-1'ここで指定しない場合、依存するsdkバージョン番号も@Config(constants=BuildConfig.class,sdk=21)で指定できます.
    参照先:https://www.jianshu.com/p/3ccf867784fc http://robolectric.org/