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

相关文章

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Spring-DI依赖注入全过程

《Spring-DI依赖注入全过程》SpringDI是核心特性,通过容器管理依赖注入,降低耦合度,实现方式包括组件扫描、构造器/设值/字段注入、自动装配及作用域配置,支持灵活的依赖管理与生命周期控制,... 目录1. 什么是Spring DI?2.Spring如何做的DI3.总结1. 什么是Spring D

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

SpringBoot加载profile全面解析

《SpringBoot加载profile全面解析》SpringBoot的Profile机制通过多配置文件和注解实现环境隔离,支持开发、测试、生产等不同环境的灵活配置切换,无需修改代码,关键点包括配置文... 目录题目详细答案什么是 Profile配置 Profile使用application-{profil

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二