工作笔记-JUnit测试时,【unknown protocol: classpath】

本文介绍了一种在Spring Boot项目中使用JUnit进行测试时,遇到的关于classpath路径的MalformedURLException异常问题及解决方案。通过在测试类中初始化TomcatURLStreamHandlerFactory,可以有效解决因未加载处理classpath前缀地址类导致的错误。
部署运行你感兴趣的模型镜像

在application.yml中使用了classpath路径的uri来获取工程中的资源文件:

        javax: 
          cache: 
            provider: org.ehcache.jsr107.EhcacheCachingProvider
            uri: classpath:ehcache.xml
            missing_cache_strategy: create

启动工程时正常,但是使用junit测试时,会出现错误:

MalformedURLException: unknown protocol: classpath

原因是处理classpath前缀地址的类org.apache.catalina.webresources.TomcatURLStreamHandlerFactory在junit测试时并未加载,提供一个快速解决这个问题的办法:

    @BeforeClass
    public static void init() {
        org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.getInstance();
    }

再运行,完美解决。

参考自stackoverflow:

https://stackoverflow.com/questions/52936054/spring-boot-test-malformedurlexception-unknown-protocol-classpath

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

### 三级标题:Maven Surefire 插件测试阶段构建失败的解决方案 Maven Surefire Plugin 是用于执行项目单元测试的标准插件,版本 2.12.4 在测试执行过程中因无法从阿里云仓库解析依赖项 `surefire-junit4:2.12.4` 导致构建失败,主要原因是远程仓库中缺失该依赖或网络访问受限。此问题可通过配置正确的仓库地址、手动安装依赖或升级插件版本解决。 在某些情况下,Maven 默认使用的中央仓库或配置的镜像(如阿里云镜像)可能无法提供某些旧版本依赖包。对于 `surefire-plugin` 的依赖问题,可以尝试在 `pom.xml` 中显式声明 `surefire-junit4` 依赖,确保 Maven 能够正确解析并下载该组件。配置示例如下: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version> <dependencies> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-junit4</artifactId> <version>2.12.4</version> </dependency> </dependencies> </plugin> ``` 若上述配置仍无法解决依赖问题,建议尝试升级 `maven-surefire-plugin` 至更高版本(如 3.0.0-M5 或以上),以获得更好的兼容性和更稳定的依赖支持。新版插件通常包含对旧版问题的修复和优化,有助于避免因依赖解析失败导致的构建中断。 如果项目必须使用 `2.12.4` 版本且无法通过配置镜像下载依赖,可手动下载 `surefire-junit4-2.12.4.jar` 并使用以下命令安装到本地仓库: ```bash mvn install:install-file -Dfile=surefire-junit4-2.12.4.jar -DgroupId=org.apache.maven.surefire -DartifactId=surefire-junit4 -Dversion=2.12.4 -Dpackaging=jar ``` 此外,确保 `settings.xml` 文件中配置的镜像仓库地址有效,并且网络访问不受限制。阿里云镜像配置示例如下: ```xml <mirrors> <mirror> <id>aliyun</id> <name>Aliyun Maven</name> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ``` 通过上述配置,可提升依赖下载速度并减少因网络问题导致的构建失败情况。 --- ### 三级标题:相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值