robolectric 依赖库加载缓慢

2024-09-01 11:08

本文主要是介绍robolectric 依赖库加载缓慢,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

robolectric 依赖库下载各种踩坑。。。

1.gradlew test 运行单元测试用例报错如下:
org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException

com.tencent.next.MainActivityTest > testActivity FAILEDorg.apache.tools.ant.BuildExceptionCaused 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_ERRORDownloading: 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{用户名}.m2\repository\org\robolectric,但我一直用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或者名字列表是对进程可用的,在运行的时候只测试在list中指定的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_r2-robolectric-1’如果不在这里指定,通过@Config(constants = BuildConfig.class , sdk = 21) 也可以指定依赖的sdk版本号。

参考:
https://www.jianshu.com/p/3ccf867784fc
http://robolectric.org/

这篇关于robolectric 依赖库加载缓慢的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126766

相关文章

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1