首页 > 其他分享 >SpringBoot03 - 整合JUnit

SpringBoot03 - 整合JUnit

时间:2023-02-20 23:12:24浏览次数:37  
标签:SpringBoot SpringBoot03 Spring class SpringBootTest 整合 测试 注解 JUnit

整合JUnit

​ SpringBoot技术的定位用于简化开发,再具体点是简化Spring程序的开发。所以在整合任意技术的时候,如果你想直观感触到简化的效果,你必须先知道使用非SpringBoot技术时对应的整合是如何做的,然后再看基于SpringBoot的整合是如何做的,才能比对出来简化在了哪里。

​ 我们先来看一下不使用SpringBoot技术时,Spring整合JUnit的制作方式

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

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

​ SpringBoot就抓住上述两条没有技术含量的内容书写进行开发简化,能走默认值的走默认值,能不写的就不写,具体格式如下

@SpringBootTest
class Springboot04JunitApplicationTests {
    //注入你要测试的对象
    @Autowired
    private BookDao bookDao;
    @Test
    void contextLoads() {
        //执行要测试的对象对应的方法
        bookDao.save();
        System.out.println("two...");
    }
}

​ 看看这次简化成什么样了,一个注解就搞定了,而且还没有参数,再体会SpringBoot整合其他技术的优势在哪里,就两个字——简化。使用一个注解@SpringBootTest替换了前面两个注解。至于内部是怎么回事?和之前一样,只不过都走默认值。

​ 这个时候有人就问了,你加载的配置类或者配置文件是哪一个?就是我们前面启动程序使用的引导类。如果想手工指定引导类有两种方式,第一种方式使用属性的形式进行,在注解@SpringBootTest中添加classes属性指定配置类

@SpringBootTest(classes = Springboot04JunitApplication.class)
class Springboot04JunitApplicationTests {
    //注入你要测试的对象
    @Autowired
    private BookDao bookDao;
    @Test
    void contextLoads() {
        //执行要测试的对象对应的方法
        bookDao.save();
        System.out.println("two...");
    }
}

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

@SpringBootTest
@ContextConfiguration(classes = Springboot04JunitApplication.class)
class Springboot04JunitApplicationTests {
    //注入你要测试的对象
    @Autowired
    private BookDao bookDao;
    @Test
    void contextLoads() {
        //执行要测试的对象对应的方法
        bookDao.save();
        System.out.println("two...");
    }
}

温馨提示

​ 使用SpringBoot整合JUnit需要保障导入test对应的starter,由于初始化项目时此项是默认导入的,所以此处没有提及,其实和之前学习的内容一样,用什么技术导入对应的starter即可。

总结

  1. 导入测试对应的starter
  2. 测试类使用@SpringBootTest修饰
  3. 使用自动装配的形式添加要测试的对象
  4. 测试类如果存在于引导类所在包或子包中无需指定引导类
  5. 测试类如果不存在于引导类所在的包或子包中需要通过classes属性指定引导类

标签:SpringBoot,SpringBoot03,Spring,class,SpringBootTest,整合,测试,注解,JUnit
From: https://www.cnblogs.com/Ashen-/p/17139349.html

相关文章

  • SpringBoot04 - 整合MyBatis
    整合MyBatis​ 整合完JUnit下面再来说一下整合MyBatis,这个技术是大部分公司都要使用的技术,务必掌握。如果对Spring整合MyBatis不熟悉的小伙伴好好复习一下,下面列举出原始......
  • 基于贪心算法的高效信息整合系统
    基于贪心算法的高效信息整合系统1 引言目前,互联网逐渐普及到了家家户户,与此同时,企业也在日常的运作中产生了大量的数据,这些大量的、杂乱无章的、难以理解的数据,需......
  • OMS和业务中台的整合方案
    一、项目调研通过调研众多企业的数字化改造进程中,一般或多或少面临以下几种情况。1、全渠道订单,及线上线下订单难以融合处理的问题。2、库存无法共享处理,库存仓位过重的问题......
  • ssh 的 整合方案
    web.xml:可以把<propertyname="annotatedClasses"> 改成<propertyname="packagesToScan"><list><value>com.***.***</value></list></property......
  • XXL-JOB 分布式任务调度框架(Cron表达式、环境搭建、整合SpringBoot、广播任务与动态分
    (目录)xxl-Job分布式任务调度1.概述1.1什么是任务调度我们可以先思考一下业务场景的解决方案:某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。某银行......
  • MongoDB简介与应用场景、Docker安装Mongo、整合SpringBoot实现CRUD
    (目录)1MongoDB相关概念1.1业务应用场景传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:•Hi......
  • php 本地储存+ 阿里Oss +七牛储存 一步到位整合composer
    composer安装composerrequireitxiao6/uploaddev-master使用说明:​​https://github.com/itxiao6/upload​​作者写的上传方式为web直接上传的方式,如果使用本地文件同步......
  • SSM整合02 - Spring整合SpringMVC
    Spring与SpringMVC分别各自管理Service层和Controller层spring.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/be......
  • SSM整合03 - Spring整合MyBatis
    MyBatis核心配置文件mybatis-config.xmlSpring整合MyBatis的核心点:将MyBatis核心配置文件中的配置尽可能写入Spring的配置文件中原MyBatis核心配置文件mybatis-config.......
  • 通过整合lightweight openpose的收获
    1.transformer是对lable和image进行处理。2.训练时图片的批度都是一个大小,验证时可不必遵循。3.paf就是向量图一个x一个y。4.neck是左肩和右肩的关键点。5.最后一个key......