后端项目初始化的一些小坑点

SpringBoot 项目初始化


  • 使用 IDEA 开发者工具内置的 SpringBoot 脚手架初步搭建基本没问题
    但是这里也有一个小坑点:如果你使用的是较新的 SpringBoot 搭建,它内置的是 Junit5(较新版本),但 IDEA 内置的 测试执行器可能无法兼容新版本的 Junit,可能会出现以下报错:

    Exception in thread "main" java.lang.NoSuchMethodError: 'java.lang.String org.junit.platform.engine.discovery.MethodSelector.getMethodParameterTypes()'
    at com.intellij.junit5.JUnit5TestRunnerUtil.loadMethodByReflection(JUnit5TestRunnerUtil.java:127)
    at com.intellij.junit5.JUnit5TestRunnerUtil.buildRequest(JUnit5TestRunnerUtil.java:102)
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:43)
    at com.intellij.rt.junit.IdeaTestRunnerRepeater1.execute(IdeaTestRunner.java:38)
    at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:231)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)

解决办法:降级 SpringBoot 版本或者使用 Junit4。



  • 单元测试的一些注意点
    -- 在 SpringBoot 启动类上添加 @MapperScan,指定 Mapper 所在的包
    -- 包路径与主启动类相同(或在其子包下),这样 Spring 能自动扫描到配置
    -- 不在同一根包下,需在 @SpringBootTest 下指定 classes 属性 @SpringBootTest(classes = PairMateBackendApplication.class)
    -- 在类头上需添加 @RunWith(SpringRunner.class) ,因为 Junit4 默认不会启动 Spring 容器,添加了这一行后才会去加载 Spring 上下文

目前我还是比较喜欢用 Junit4,兼容会比较好。如果使用 Junit5,启动 Spring 容器要更改为: @ExtendWith(SpringExtension.class) 语句。

相关推荐
2301_7807896631 分钟前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
学长毕设1 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn2 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川2 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵2 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
秋天的怀念_David3 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1003 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin3 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
霸道流氓气质4 小时前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
captain3764 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis