SpringBoot @Test单元测试方式

 更新时间:2024年04月19日 15:08:04   作者:偷代码的猫  
这篇文章主要介绍了SpringBoot @Test单元测试方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、普通测试

1.初步了解:springboot一般使用maven搭建工程,在maven工程中存在test包(虽然测试用例是可以存在于src下,但是规范统一是放在test中)

我们的在test包可以同步src下的包结构,针对相应的java类写test用例,在做单元测试这是非常重要的

2.一个简单的测试用例,就像main方法一样

public class UtilTest {
    @Test
    public void currencyTest() throws Exception{
        String uuid = MD5Util.getMd5("测试用例");
 
        System.out.println(uuid);
    }
}

注意到这里我们使用了这个注解@Test,由JUnit提供,它回去扫描带有该注解的方法去调用,从而达到相对应的效果

二、SpringBoot调用测试  

1.我们调用springboot中的controller、service、mapper层时,需要注入它们,需要springboot的相关环境 

2.测试用例:

 
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBootCatApplication.class)
public class CatTest {
    @Autowired
    private ElasticDao elasticDao;
    @Autowired
    private testService testService;
 
    @Test
    public void testEs() throws Exception{
        ResponseEntity responseEntity = elasticDao.saveAndUpdateBulkList(EsIndexEnum.TEST.type,"test","test");
        System.out.println(responseEntity);
    }
 
    @Test
    public void testTestService() throws Exception{
        ResultEntity ResultEntity = testService.test("1");
        System.out.println(ResultEntity);
    }
}

这里我们添加了两个注解@RunWith@SpringBootTest,可以进入SpringBootTest中查看到这一段代码确认web环境,一般我们将classes指向启动类

SpringBootTest.WebEnvironment webEnvironment() default SpringBootTest.WebEnvironment.MOCK;

三、Junit4单元测试

这个依赖于idea的插件Junit

  • 1、选择要测试的java类
  • 2、按住alt+insert键
  • 3、选择Junit Test
  • 4、选择Junit4
  • 5、生成在test对应包下

测试内容可以选择上述直接调用方法体,也可以是用Junit提供的Mock对象

/**
     * 模拟mvc测试对象
     */
    private MockMvc mockMvc;
 
    /**
     * web项目上下文
     */
    @Autowired
    private WebApplicationContext webApplicationContext;
 
    /**
     * 所有测试方法执行之前执行该方法
     */
    @Before
    public void before() {
        //获取mock对象
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }

比较测试结果是否符合预期可以使用

Assert.assertEquals("预期结果", "实际结果");
Assert.assertTrue();
Assert.assertNotNull();
Assert.assertNotEquals();
Assert.assertNull();

我们可以使用Jacoco,来获得我们单元测试的分支覆盖率

这里我就不做过多的描述了,有兴趣可以去了解一下

四、pom.xml依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-test</artifactId>
	<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
</dependency>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java Spring 5 新特性函数式Web框架详细介绍

    java Spring 5 新特性函数式Web框架详细介绍

    正如昨天Juergen博客中所提到的,Spring 5.0的第二个里程碑是引入了一个新的函数式web框架。在这篇文章中,我们将给出关于这个框架的更多信息,,需要的朋友可以参考下
    2016-12-12
  • 走进JDK之不可变类String

    走进JDK之不可变类String

    这篇文章主要给大家介绍了JDK之不可变类String的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JDK具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • Java实现考试系统

    Java实现考试系统

    这篇文章主要为大家详细介绍了Java实现考试系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 详解Java如何使用集合来实现一个客户信息管理系统

    详解Java如何使用集合来实现一个客户信息管理系统

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java 集合实现一个客户信息管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java中为什么要实现Serializable序列化

    Java中为什么要实现Serializable序列化

    在Java编程中,Serializable序列化是一个常见的概念,它允许对象在网络上传输或持久化到磁盘上,本文将深入探讨为什么在Java中要实现Serializable序列化,并通过示例代码来解释其重要性
    2023-10-10
  • 详解IntelliJ IDEA 2020 的Debug功能

    详解IntelliJ IDEA 2020 的Debug功能

    这篇文章主要介绍了IntelliJ IDEA 2020 的Debug功能,本文通过实例截图相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • SpringBoot-RestTemplate如何实现调用第三方API

    SpringBoot-RestTemplate如何实现调用第三方API

    这篇文章主要介绍了SpringBoot-RestTemplate实现调用第三方API的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 快速解决跨域请求问题:jsonp和CORS

    快速解决跨域请求问题:jsonp和CORS

    这篇文章主要介绍了快速解决跨域请求问题:jsonp和CORS,涉及jsonp和CORS的介绍,分享了前端 jQuery 写法,后端 SpringMVC 配置,后端非 SpringMVC 配置等相关内容,具有一定借鉴价值,需要的朋友可以参考下。
    2017-11-11
  • 详解设计模式在Spring中的应用(9种)

    详解设计模式在Spring中的应用(9种)

    这篇文章主要介绍了详解设计模式在Spring中的应用(9种),详细的介绍了这9种模式在项目中的应用,具有一定的参考价值,感兴趣的可以了解一下
    2019-04-04
  • 阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式

    阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式

    本文主要介绍了阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论