当前位置: 首页 > article >正文

springboot 单元测试-各个模块举例

controller单测

 

import com.fasterxml.jackson.databind.ObjectMapper; 
import lombok.SneakyThrows;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import java.util.ArrayList;
import java.util.List;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest(DemoFacade.class)
@RunWith(MockitoJUnitRunner.class)
public class DemoFacadeTest {
    @InjectMocks
    private DemoFacade demoFacade;
    @Autowired
    private MockMvc mockMvc;
    @Mock
    private DemoQryAPI demoQryAPI; // DemoFacade 里的注入的一个类


    @Before
    public void init() {
        // 开启mock
        MockitoAnnotations.initMocks(this);

        // 测试方法执行前,初始化MockMvc
        mockMvc = MockMvcBuilders.standaloneSetup(demoFacade).build();
    }
    @Autowired
    private ObjectMapper objectMapper;
    @SneakyThrows
    @Test
    public void selectAll() {
        PaginationResult<List<DemoQryResp>> obj2 = new PaginationResult();
        Mockito.when(demoQryAPI.selectAll(Mockito.any())).thenReturn(obj2);
        obj2.setCode("000000"); 
        String contentParam = "{}"; //json
        mockMvc .perform(MockMvcRequestBuilders.post("/xx/select")
                        .contentType(MediaType.APPLICATION_JSON)
                          .content(contentParam)
                )
                .andExpect(status().isOk()) ;
    }
}

mapper单测

测试自定义的sql对不对


import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;

import javax.sql.DataSource;

import static org.junit.Assert.*;
//需要加载的配置
@SpringBootTest(classes = {DataSourceAutoConfiguration.class
, MybatisPlusAutoConfiguration.class,
        DataSource.class, SqlSessionFactory.class})
@MapperScan(basePackageClasses = DemoMapper.class)
@RunWith(SpringRunner.class)
@ActiveProfiles("mysql") // application-mysql.yml
public class DemoMapperTest { 
    @Autowired
    private DemoMapper demoMapper;
 
    @Test
    public void flushCheckingDetail() {
        demoMapper.flushCheckingDetail(); 
    }
	
}

 普通类的单测

@RunWith(MockitoJUnitRunner.class)
public class DemoTest {
    @InjectMocks
    Demo demo;

    /**
     * 测试
     */
    @Test
    public void cal() {
        List<Integer> list=new ArrayList<>(); 
		list.add(2);
		list.add(2);
        Integer sum  = demo.cal(list);  
        Assertions.assertThat(sum).isEqualTo(4);  
    }
}

注意:单测主要是测这个方法行不行,集中在这个最小单元,测试快熟,有利于代码的迭代升级,减少bug


http://www.kler.cn/a/379778.html

相关文章:

  • 2022 NOIP 题解
  • PostgreSQL (八) 创建分区
  • 文件系统上云的挑战
  • CM API方式设置YARN队列资源
  • react18中redux-promise搭配redux-thunk完美简化异步数据操作
  • 数学建模学习(135):使用Python基于WSM、WPM、WASPAS的多准则决策分析
  • 科研绘图系列:R语言多个组合堆积图(stacked plot)
  • 【1个月速成Java】基于Android平台开发个人记账app学习日记——第4天,注册登录逻辑代码
  • 理解 WordPress | 第一篇
  • 占地1.1万平,2亿投资的智能仓储系统:高架库、AGV、码垛机器人……
  • 基于MATLAB疲劳监测系统
  • 【基于LSM的ELF文件安全模块设计】参考
  • iOS 18.2 可让欧盟用户删除App Store、Safari、信息、相机和照片应用
  • PyTorch核心概念:从梯度、计算图到连续性的全面解析(一)
  • docker-compose安装rabbitmq 并开启延迟队列和管理面板插件(rabbitmq_delayed_message_exchange)
  • Harmony Next集成支付宝sdk失败
  • 2024-11-04 问AI: [AI面试题] 解释计算机视觉的概念
  • Linux/Unix grep命令
  • 实体(Entity)详解
  • Linux动态库和静态库
  • 分布式光伏管理办法
  • 批量转换图片格式(python学习)(11.3)
  • 宝藏虚拟化学习资料大全
  • 胡壮麟《语言学教程》第五版PDF英文版+中文版翻译
  • IDEA加载通义灵码插件及使用指南
  • Python小白学习教程从入门到入坑------第二十三课 封装(语法进阶)