当前位置: 首页 > news >正文

[SpringBoot]玩转单元测试系列-最后一篇

问题

使用maven-surefire-plugin 和 testng 报错:
[ERROR] Couldn't find resource: jquery.min.js
org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process

分析

直接Google AI,给出解决方案是在pom.xml配置

   <property><name>usedefaultlisteners</name><value>false</value> <!-- disabling default listeners is optional --></property>

玩转SpringBoot单元测试

经过之前的折腾,常年累月的实践最后发现,基础架构的复杂性,加上代码的复杂性,以及SpringBoot本身的复杂性,是指数级增长的。

走过的最长的套路:

  • 团队在相当长的时间上,Dubbo 使用了运维部门提供的Zookeeper作为注册中心,Zookeeper甚至使用了加密,这就导致本地无法在IDEA当中运行,需要一遍遍在服务器上远程DEBUG。

  • 团队在近期将 Zookeeper下掉,使用了 Dubbo + Nacos,这就一下子解决了本地服务无法启动的问题,因为Nacos直接使用Grpc协议跟服务端交互,使用账号密码就行。

  • 在之前的复杂条件下,即便借助AI,AI 也吐槽,太复杂了。

  • 在之前的复杂条件下,具体而言,就是只启动 JPA 连接数据库,屏蔽 Dubbo ,ElasticSearch 等影响应用启动速度的组件,需要刀法精准,需要写非常多的注解,要了解 Mybatis,JPA 如何启动和扫瞄,非常复杂。

  • 命令行越来越长,当项目中集成了APM组件,例如SENTRY时,还需要一堆环境变量,甚至有许多人分不清java system properties,和Linux环境变量,还有Maven复杂的各种Plugin插件变量,命令非常长。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.2.5</version><dependencies><dependency><groupId>org.apache.maven.surefire</groupId><artifactId>surefire-testng</artifactId><version>3.2.5</version></dependency></dependencies><configuration><properties><!--https://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html--><property><name>usedefaultlisteners</name><value>false</value></property><property><name>failIfNoSpecifiedTests</name><value>false</value></property></properties><systemPropertyVariables><system_env1>test</system_env1><system_env2>PRO</system_env2><APP_ID>apollo-application-example</APP_ID><SENTRY_SKIP_SOURCE_UPLOAD>true</SENTRY_SKIP_SOURCE_UPLOAD></systemPropertyVariables></configuration></plugin>

启动类,注意要和正常启动的 ApplicationBootstrap启动类相同的包下:

@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.NONE)
@ActiveProfiles("test")
public class SimpleDaoTest extends AbstractTestNGSpringContextTests {@Autowiredprivate SomeService someService;/*** 测试some方法*/@Testpublic void testSome() {someService.some();}
}

启动命令:

mvn test -Dtest=SimpleDaoTest#testSome -Dsurefire.failIfNoSpecifiedTests=false -am -pl "所在模块"

使用 JUnit 也是一样的。

注意尤其是在maven多模块项目中,有些module没有单元测试代码文件会在编译时失败,因此需要 -Dsurefire.failIfNoSpecifiedTests=false 直至到SimpleDaoTest所在模块。

参考链接

  • maven官方 testng
  • Maven官方 single-test
http://www.jsqmd.com/news/374962/

相关文章:

  • php 1
  • 极萌美容仪怎么样?科研加持安全又高效 - 博客万
  • 2026年全国二手中央空调回收厂家权威榜单 实力靠谱高效 适配工业等多场景资源再生 - 深度智识库
  • 2026年全国商用设备回收厂家哪家权威?专精多品类 服务响应高效 覆盖全国多区域 - 深度智识库
  • 【opencode】opencode安装使用
  • 2026年权威推荐:卡卡音响引领西南音视频智能化新趋势 - 深度智识库
  • Java计算机毕设之:基于springboot的老年一站式服务平台基于springboot的养老一站式服务系统(完整前后端代码+说明文档+LW,调试定制等)
  • html css js 1
  • 我们的一体化年度服务怎么做:带电池产品从出运到欧盟合规的“交付清单”公开
  • netty学习
  • Java毕设项目推荐-基于SpringBoot的社区养老服务系统设计与实现基于springboot的安心养老一站通服务系统的设计与实现【附源码+文档,调试定制服务】
  • 目标检测数据集 - 太空超新星探测检测数据集下载
  • Java毕设选题推荐:基于springboot的养老一站式服务系统在线预约服务上门护理、康复治疗、日间照料等服务【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2026年陕西环保装修公司排名:状元郎装饰领衔新房别墅装修与全屋装修设计典范 - 深度智识库
  • 登录认证,验证码实现逻辑
  • 计算机Java毕设实战-基于springboot+vue的老年一站式服务平台基于springboot的养老一站式服务系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 2.12假期记录
  • 【课程设计/毕业设计】基于springboot的智慧养老综合服务平台 一站式养老服务管理系统【附源码、数据库、万字文档】
  • 函数计算AgentRun重磅上线知识库功能,赋能智能体更“懂”你
  • 性能提升 4 倍的背后:时序数据库 IoTDB 系统调优方法与五个真实案例
  • 2026年电商AI客服品牌权威盘点与避坑指南:抖音/天猫/拼多多商家如何选择? - 深度智识库
  • 花最少的钱降最多的AI率,2026年性价比最高的降AI工具推荐
  • 智能合约自毁:当资产还在,合约死了 —— 深度解析 selfdestruct 导致的资产锁定风险 - 若
  • 【AI应用开发工程师】-长期 AI 编程后,我发现 AI 带来的最大提效竟然是…
  • 2026年2月WPC格栅生产厂家TOP10排行榜:优质供应商环保、专利等综合实力解析 - 品牌推荐2026
  • 手握JBL代理与多项一级资质,卡卡音响凭硬核实力领跑行业 - 深度智识库
  • 2026年盘点口碑好的深圳短视频拍摄公司,哪家几家比较好? - 界川
  • 【毕业设计】基于springboot的校园共享电动自行车管理系统(源码+文档+远程调试,全bao定制等)
  • 【计算机毕业设计案例】基于SpringBoot的地区文创产品销售系统基于springboot的文创销售管理系统(程序+文档+讲解+定制)
  • 2026年2月雪弗板生产厂家TOP10排行榜:优质供应商环保、专利等综合实力解析 - 品牌推荐2026