首页 > 其他分享 >Spring Boot项目——单元测试

Spring Boot项目——单元测试

时间:2022-09-21 14:45:50浏览次数:71  
标签:Boot Spring 单元测试 value SpringBootTest 测试 class

单元测试的作用 / 为什么要进行单元测试

  • 首先开发者要知道一点,无论什么情况下,测试一定要做!测试一定要做!测试一定要做!
  • 单元测试出现前测试方法
    • 启动整个应用,用户通过直接操作页面,操作系统进行测试——每次测试都要启动整个项目
    • 写一个测试入口main方法,调用需要测试的方法进行测试——入口一定要记得删除
  • 单元测试
    • 无论是一个方法,还是单个逻辑,既可以全面测试,又可以化整为零,单元测试
    • 代码留存,更改方法后可以复用测试代码,提升效率,同时保存测试记录

 系统环境

  • Spring Boot 2.2.1RELEASE
  • Java 8
  • Junit 5
  • Maven 3

pom依赖

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

Controller层测试代码

@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles(value = "dev")
public class HttpRequestTest {

    @LocalServerPort
    private int port;

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    @Rollback(value="false")
    public void testHello() {
        String requestResult = this.restTemplate.getForObject("http://127.0.0.1:" + port + "/test/hellp",
                String.class);
        Assertions.assertThat(requestResult).contains("Hello, spring");
    }
}
  • @ExtendWith(SpringExtension.class):让JUnit运行Spring的测试环境,获得Spring环境的上下文的支持。
  • @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 、@LocalServerPort:使用本地的一个随机端口启动服务。
  • @ActiveProfiles(value="dev"):多环境下使用的测试环境。
  • TestRestTemplate:在配置了 webEnvironment 后,Spring Boot 会自动提供一个 TestRestTemplate 实例,可用于发送 HTTP 请求。
  • @Rollback:事务是否回滚。

Service层测试代码

@ExtendWith(SpringExtension.class)
@SpringBootTest
@ActiveProfiles(value = "dev")
public class HttpRequestTest {

    @Test
    @Rollback(value="false")
    public void testHello() {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate start = LocalDate.parse("2020-10-26", dtf);
        LocalDate end = LocalDate.parse("2020-10-31", dtf);
        Integer integer = XXXService.ConflictTime("10000001", start, end);
        Assert.assertThat(integer, Matchers.notNullValue());
    }
}

 

标签:Boot,Spring,单元测试,value,SpringBootTest,测试,class
From: https://www.cnblogs.com/zuiyue_jing/p/16714929.html

相关文章

  • 面试官:为什么 Spring 和 IDEA 都不推荐使用 @Autowired 注解??
    作者:小亮哥Ya链接:https://juejin.cn/post/7080441168462348319大家在使用IDEA开发的时候有没有注意到过一个提示,在字段上使用Spring的依赖注入注解@Autowired后会出现如......
  • 【微服务架构设计实施】第一部分:架构篇-1:微服务架构与Spring Cloud介绍
    〇、概述 一、微服务架构与SpringCloud(一)概念不同说法:细粒度的、清凉组件化的小型SOA(面向服务架构)统一说法:小型应用程序(服务组件),使用轻量级设计方法和HTTP协议通信......
  • springcloud或者springboot项目生产如何发版
    我们要先从注册中心将服务下线为了通用性,不管任何注册中心都能使用统一的逻辑,我们在项目提供下面的Controller:@RestControllerpublicclassServerDeRegisterControl......
  • python学习笔记:pytest单元测试框架
    一、安装配置和运行规则1、安装:pipinstallpytest查看安装版本:pytest--version 2、Pytest用例运行规则用Pytest写用例时候,一定要按照下面的规则去写,否则不符合规......
  • 使用 react-spring 开发一个智能暗模式切换按钮
    最近,我重写了博客右上角的深色模式切换按钮。为此,我也学会了学习Figma。虽然技术不难,但收获不少。至少我可以根据猫和老虎设计一些简单的SVG图形。废话不多说,介绍一下我......
  • spring的自动装配
    spring基础代码1、pojo类创建一个Cat类packagepojo;publicclassCat{publicvoidshow(){System.out.println("喵喵喵");}}创建一个Dog......
  • spring理解控制反转
    理解控制反转1、创建一个dao层创建一个UserDao接口packagedao;//dao层是调用数据库的publicinterfaceUserDao{voidgetUserDao();}创建一个UserDao的......
  • spring的依赖注入
    依赖注入1、依赖:指bean对象创建于容器,bean对象创建依赖于资源2、注入:指bean对象所依赖的资源,由容器来设置和装配构造器注入set注入DI依赖注入​IOC的一个重点......
  • Spring Boot - Undertow容器启动
    Undertow简介Undertow是红帽公司开发的一款基于NIO的高性能Web嵌入式服务器Untertow的特点:轻量级:它是一个Web服务器,但不像传统的Web服务器有容器概念,它由两......
  • springboot逆向工程
    通过逆向工程少写很多代码generatorConfig.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTDMyBati......