Spring Boot整合JUnit

引言

测试是软件开发过程中不可或缺的一环,而JUnit作为Java生态中最流行的测试框架之一,与Spring Boot的整合为开发者提供了一套强大的测试工具。本文将讨论Spring Boot整合JUnit的技术细节、最佳实践,以帮助开发者充分利用这一强大组合,提高代码质量与可维护性。

Spring整合JUnit的制作方式

//加载spring整合junit专用的类运行器
@RunWith(SpringJUnit4ClassRunner.class)
//指定对应的配置信息
@ContextConfiguration(classes = SpringConfig.class)
public class UserServiceTestCase {
    //注入你要测试的对象
    @Autowired
    private UserService userService;
    @Test
    public void testGetById(){
        //执行要测试的对象对应的方法
        System.out.println(userService.findById(1));
    }
}

第一个注解@RunWith是设置Spring专用的测试类运行器,简单说就是Spring程序执行程序有自己的一套独立的运行程序的方式,不能使用JUnit提供的类运行方式了,必须指定一下,但是格式是固定的,琢磨一下,每次都指定一样的东西,这个东西写起来没有技术含量啊
第二个注解@ContextConfiguration是用来设置Spring核心配置文件或配置类的,简单说就是加载Spring的环境你要告诉Spring具体的环境配置是在哪里写的,虽然每次加载的文件都有可能不同,但是仔细想想,如果文件名是固定的,这个貌似也是一个固定格式。既然有可能是固定格式,那就有可能每次都写一样的东西,也是一个没有技术含量的内容书写

主要: SpringBoot抓住上述两点内容书写进行开发简化

Spring Boot与JUnit整合

  1. 依赖配置
    在pom.xml中添加JUnit和Spring Boot Test的依赖:
<dependencies>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
      </dependency>
</dependencies>
  1. 测试类
@SpringBootTest
class UserTest {
    @Autowired
    private UserController userController;
    @Test
    public void testJunit(){
        System.out.println(userController);
    }
}

注意: 测试类所在的包需要和启动类是在同一个包下。否则就要使用如下写法指定启动类。

方式一

使用属性的形式进行,在注解@SpringBootTest中添加classes属性指定配置类

@SpringBootTest(classes = UserApplication.class)
class UserTest {
    @Autowired
    private UserController userController;
    @Test
    public void testJunit(){
        System.out.println(userController);
    }
}

方式二

回归原始配置方式,仍然使用@ContextConfiguration注解进行,效果是一样的

@SpringBootTest
@ContextConfiguration(classes = UserApplication.class)
class UserTest {
    @Autowired
    private UserController userController;
    @Test
    public void testJunit(){
        System.out.println(userController);
       
    }
}

兼容老版本

如果是对老项目中的SpringBoot进行了版本升级会发现之前的单元测试代码出现了一些问题。
因为Junit5和之前的Junit4有比较大的不同。
在这里插入图片描述
从上图可以看出 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

  • JUnit Platform: 这是Junit提供的平台功能模块,通过它,其它的测试引擎也可以接入
  • JUnit JUpiter: 这是JUnit5的核心,是一个基于JUnit
    Platform的引擎实现,它包含许多丰富的新特性来使得自动化测试更加方便和强大。
  • JUnit Vintage: 这个模块是兼容JUnit3、JUnit4版本的测试引擎,使得旧版本的自动化测试也可以在JUnit5下正常运行。

虽然Junit5包含了JUnit Vintage来兼容JUnit3和Junit4,但是 SpringBoot 2.4 以上版本对应的spring-boot-starter-test移除了默认对 Vintage 的依赖。 所以当我们仅仅依赖spring-boot-starter-test时会发现之前我们使用的@Test注解和@RunWith注解都不能使用了。

<dependency>
	<groupId>org.junit.vintage</groupId>
	<artifactId>junit-vintage-engine</artifactId>
	<scope>test</scope>
</dependency>

注意:
org.junit.Test对应的是Junit4的版本,就搭配@RunWith注解来使用。

@SpringBootTest
@RunWith(SpringRunner.class)
class UserTest {
    @Autowired
    private UserController userController;
    @Test
    public void testJunit(){
        System.out.println(userController);

    }
}

结语

Spring Boot与JUnit的整合为测试提供了便捷且强大的工具,通过理解Spring Boot与JUnit的整合细节,开发者可以更加自信地构建出稳健、高效的应用程序。在项目的生命周期中,充分发挥测试的作用,将使得代码更加健壮、可测试和易于维护。

  • 44
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
整合Spring Boot和MyBatis的过程如下: 1. 添加依赖:在项目的pom.xml文件中添加Spring Boot和MyBatis的相关依赖。可以使用Spring Initializr进行项目初始化,选择相应的依赖。 2. 配置数据源:在application.properties或application.yml文件中配置数据库连接信息,如数据库URL、用户名、密码等。 3. 创建实体类:根据数据库表结构,创建对应的Java实体类,使用注解标识实体类与数据库表的映射关系。 4. 创建Mapper接口:创建Mapper接口,用于定义数据库操作的方法。可以使用注解或XML配置SQL语句。 5. 创建Mapper映射文件(可选):如果使用XML配置SQL语句,需要创建Mapper映射文件,将SQL语句与Mapper接口进行映射。 6. 配置MyBatis:在application.properties或application.yml文件中配置MyBatis的相关属性,如Mapper接口的包路径、Mapper映射文件的路径等。 7. 创建Service层:创建Service层,用于业务逻辑处理。在Service中注入Mapper接口,并调用相应的方法进行数据库操作。 8. 创建Controller层:创建Controller层,处理HTTP请求和响应。在Controller中注入Service,并定义相应的请求处理方法。 9. 运行测试:编写测试代码,验证整合是否成功。可以使用JUnit或其他测试框架进行单元测试。 10. 启动应用程序:运行Spring Boot应用程序,访问相应的URL进行测试,确保整合成功。 在整合过程中,需要注意以下几点: - 确保依赖版本兼容:Spring Boot和MyBatis的依赖版本需要兼容,可以查看官方文档或相关文档了解兼容性信息。 - 配置数据源:正确配置数据库连接信息,确保能够成功连接数据库。 - 注解配置或XML配置:可以根据个人偏好选择使用注解配置还是XML配置SQL语句。 - 事务管理:根据需要,可以使用Spring Boot的事务管理机制对数据库操作进行事务管理。 通过以上步骤,就可以完成Spring Boot和MyBatis的整合,实现数据库的访问和业务逻辑处理。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇遇少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值