SpringBoot整合Junit与Mybatis实战

📅 发布时间:2026/7/11 3:38:51 👁️ 浏览次数:
SpringBoot整合Junit与Mybatis实战
前言前面我们学习完了SpringBoot的相关基础知识以及多环境配置等等下面我们基于SpringBoot如何提高开发的效率注重于代码的业务逻辑整合Junit和Mybatis。整合就是把复杂的技术细节封装起来让我们能专注于业务本身。就像我们不需要懂发动机原理也能开车一样。整合Junit实际上我们仅仅是创建了一个SpringBoot项目然后在测试类中测试。这样看起来似乎没有整合正所谓“没有所谓的岁月静好只是有人在为你负重前行”为我们负重前行的实际上是SpringBoot的自动配置功能。spring-boot-starter-test当我们创建 Spring Boot 项目时无论是通过 start.spring.io 还是 IDEA 的 Spring Initializrpom.xml中会自动添加这个依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency这个start里面包含了什么!-- spring-boot-starter-test 内部包含了 -- dependencies !-- 1. JUnit 5 (Jupiter) - 测试框架本身 -- dependency groupIdorg.junit.jupiter/groupId artifactIdjunit-jupiter/artifactId /dependency !-- 2. Spring 测试支持 - 让JUnit能和Spring整合 -- dependency groupIdorg.springframework/groupId artifactIdspring-test/artifactId /dependency !-- 3. Spring Boot 测试支持 - SpringBootTest等注解 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-test/artifactId /dependency !-- 4. Mockito - 模拟对象 -- dependency groupIdorg.mockito/groupId artifactIdmockito-core/artifactId /dependency !-- 5. AssertJ - 流畅断言 -- dependency groupIdorg.assertj/groupId artifactIdassertj-core/artifactId /dependency !-- 还有其他测试工具... -- /dependencies简单理解spring-boot-starter-test就相当于一个火锅全家桶里面包含了所有的配料菜锅我们只需要使用即可而不需要手动的去下载安装这些配置。创建SpringBoot的实际过程1.我们先创建一个项目选择Spring Initializr选择依赖2.IDEA在背后在pom文件中自动的添加对应的依赖配置自动添加测试的starter还自动生成测试目录和示例测试类。关于这个自动生成的配置类SpringBootTest // 这已经是Spring整合JUnit的注解了 class ApplicationTests { // 自动生成 Test // JUnit 5的注解 void contextLoads() { // 一个简单的测试方法 // 测试Spring容器能否启动}}首先区分维度Application主启动类ApplicationTest测试类角色项目启动入口测试入口运行目的启动整个应用对外提供服务验证代码是否正确运行时机开发/生产环境运行只在测试时运行生命周期长期运行直到手动停止短暂运行几秒钟端口占用占用端口如8080不占用端口或随机端口是否必须每个Spring Boot项目必须有一个可选但建议有SpringBootTest的源码SpringBootTest 的源码简化版 Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) BootstrapWith(SpringBootTestContextBootstrapper.class) public interface SpringBootTest { }那我们为什么不用在测试类中写注解Configuration配置类呢。实际工作流程1. 你只写了这一行SpringBootTestclass UserServiceTest {Autowired UserService userService;}2. Spring 测试框架会这样做扫描当前测试类所在的包及其子包查找 SpringBootApplication 注解的类加载这个类的配置相当于执行了 SpringApplication.run()3. 找到了你的主启动类SpringBootApplication // 这里包含了 Configurationpublic class Application { public static void main(String[] args) SpringApplication.run(Application.class, args); }}4.于是测试类就能使用主启动类的所有配置了注意事项如果测试类在SpringBoot启动类的包或子包中可以省略启动类的设置也就是省略classes的设定如果不在这两者之间我们可以手动的添加SpringBoot整合Mybatis1.重新创建一个项目在创建的时候要选择对应的技术集2.在yml文件中设置数据源 注意事项SpringBoot版本低于2.4.3(不含)Mysql驱动版本大于8.0时需要在url连接串中配置时区jdbc:mysql://localhost:3306/ssm_db?serverTimezoneUTC或在MySQL数据库端配置时区解决此问题3.定义数据层接口于映射配置在接口上加上Mapper注解自动生成一个代理对象这样我们就不需要自己再创建一个实现类了简化操作。4.定义一个Javabean5.在测试类中注入接口测试功能关于代理对象Mapper生成的代理对象是在Spring容器中我们在测试类使用时需要拿出来使用Autowired是最简单的方法。结语最后的最后感谢大家观看到最后如果对你有帮助请一键三连点赞关注拜托了收藏你的支持就是我最大的鼓励持续更新对你有帮助的知识