测试---

1.加载测试专用属性

1.在启动测试环境时可以通过properties参数设置测试环境专用的属性

@SpringBootTest(properties = {"test.value=kllda"})
public class PropertiesTest {
    @Value("${test.value}")
    private String msg;
​
    @Test
    public void testPro(){
        System.out.println(msg);
    }
​
}

优势:比多环境开发中的测试环境影响范围更小,仅当前测试类有效

2.在启动测试环境时可以通过args参数设置测试环境专用的传入参数

@SpringBootTest(args = "--test.value=--test")
public class PropertiesTest {
    @Value("${test.value}")
    private String msg;
​
    @Test
    public void testPro(){
        System.out.println(msg);
    }
}

2.加载测试专用配置

使用@Import注解加载当前测试类专用的配置

@Configuration//定义这个配置类交给Spring容器管理
public class MsgTest {
    @Bean
    public String configTest(){
        return "hello";
    }
}
@SpringBootTest
@Import(MsgTest.class)
public class ConfigT {
    @Autowired
    private String msg;
    @Test
    public void getMsg(){
        System.out.println(msg);
    }
}

3.Web环境模拟测试

1.模拟端口

//端口随机 RANDOM_PORT
@SpringBootTest(webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT)
public class WebTest {
    @Test
    public void randomTest(){
​
    }

2.虚拟请求测试

 

//端口随机
@SpringBootTest(webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT)
​
//开启虚拟请求
@AutoConfigureMockMvc
​
public class WebTest {
@Test
    public void mvcv(@Autowired MockMvc mvc) throws Exception {
        //创建虚拟请求访问当前的"/books"
        MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/books");
        //执行请求
        ResultActions actions = mvc.perform(builder);
​
    }
}

3.虚拟请求状态匹配

//发出request请求,看状态码和预期的是否相同
@Test
public void testStatus(@Autowired MockMvc mvc) throws Exception {
    //创建虚拟请求访问当前的"/books"
    MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/books");
    //执行请求
    ResultActions actions = mvc.perform(builder);
    //设定预期值与真实之间的比较,成功测试通过,失败测试失败
    //定义本次调用的预期值
    StatusResultMatchers status = MockMvcResultMatchers.status();
    //预计本次调用成功的状态200
    ResultMatcher ok=status.isOk();
    //添加预计值到本次调用过程中进行匹配
    actions.andExpect(ok);
}

4.虚拟请求响应体匹配

//查看请求体的数据与预期的是否相同
@Test
public void testContent(@Autowired MockMvc mvc) throws Exception {
    //创建虚拟请求访问当前的"/books"
    MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/books");
    //执行请求
    ResultActions actions = mvc.perform(builder);
    //设定预期值与真实之间的比较,成功测试通过,失败测试失败
    //定义本次调用的预期值
    ContentResultMatchers content = MockMvcResultMatchers.content();
    //预期请求体的内容
    ResultMatcher resultMatcher = content.string("hello");
    //添加预计值到本次调用过程中进行匹配
    actions.andExpect(resultMatcher);
}

5.虚拟请求响应体(Json)匹配

//json格式的数据
@Test
public void testJson(@Autowired MockMvc mvc) throws Exception {
    //创建虚拟请求访问当前的"/books"
    MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/books");
    //执行请求
    ResultActions actions = mvc.perform(builder);
    //设定预期值与真实之间的比较,成功测试通过,失败测试失败
    //定义本次调用的预期值
    ContentResultMatchers content = MockMvcResultMatchers.content();
    //预期请求体的内容
    ResultMatcher resultMatcher = content.string("{\"id\":2,\"name\":\"111\",\"type\":\"111\",\"description\":\"111\"}");
    //添加预计值到本次调用过程中进行匹配
    actions.andExpect(resultMatcher);
}

6.虚拟请求响应头匹配

@Test
public void testContentType(@Autowired MockMvc mvc) throws Exception {
    //创建虚拟请求访问当前的"/books"
    MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/books");
    //执行请求
    ResultActions actions = mvc.perform(builder);
    //设定预期值与真实之间的比较,成功测试通过,失败测试失败
    //定义本次调用的预期值
    HeaderResultMatchers headerResultMatchers = MockMvcResultMatchers.header();
    //预期请求体的内容.
    ResultMatcher contentType = headerResultMatchers.string("Content-Type", "application/json");
    actions.andExpect(contentType);
}

4.数据测试回滚

为测试用例添加事务,SpringBoot会对测试用例对应的事务提交操作进行回滚

@SpringBootTest
@Transactional//在测试时不会让数据库留下残留数据
public class BookServiceTest {
    @Autowired
    private BookService bookService;
    @Test
    public void testServcie(){
        Book book=new Book();
        book.setType("fsfs");
        book.setDescription("adsada");
        book.setName("ssssd");
        boolean flag = bookService.save(book);
        System.out.println(flag);
    }
}

如果想在测试用例中提交事务,可以通过@Rollback注解设置

@SpringBootTest
@Transactional//在测试时不会让数据库留下垃圾数据
@Rollback(true)//会出现回滚
public class BookServiceTest {
    @Autowired
    private BookService bookService;
    @Test
    public void testServcie(){
        Book book=new Book();
        book.setType("fsfs");
        book.setDescription("adsada");
        book.setName("ssssd");
        boolean flag = bookService.save(book);
        System.out.println(flag);
    }
}

5.测试用例数据设定

测试用例数据通常采用随机值进行测试,使用SpringBoot提供的随机数为其赋值

 

${random.int}表示随机整数 ${random.int(10)}表示10以内的随机数 ${random.int(10,20)}表示10到20的随机数 其中()可以是任意字符,例如[],!!均可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/6245.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识MQ——springCloud

目录 同步通讯 同步调用存在的问题 优点 异步通讯 优势 缺点 MQ常见框架 同步通讯 同步调用存在的问题 1、耦合度高 2、性能下降 3、资源浪费 4、级联失败 优点 时效性强 ,可以立即得到结果 异步通讯 异步调用常见实现就是事件驱动模式 优势 1、解除耦合 2、…

【关于Linux中----多线程(一)】

文章目录认识线程创建线程线程优点和缺点创建一批线程终止线程线程的等待问题认识线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行&a…

高通开发系列 - linux kernel内核升级msm-4.9升级至msm-4.19(1)

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 报错和警告问题中断警告的解决方案Unknown SOC ID问题解决方法msm-vidc panic错误系统时钟功能RPM功能调试共享内存smem调试之前移植过…

SpringCloud Alibaba Nacos

文章目录第一章 SpringCloud Alibaba1.1概述1.2 主要功能1.3 组件第二章 SpringCloud Alibaba Nacos服务注册与配置中心2.1 Nacos简介2.2 安装Nacos2.3 Nacos作为服务注册中心一、服务提供者二、服务消费者三、服务注册中心对比2.4 Nacos作为服务配置中心一、Nacos基础配置项目…

【C++笔试强训】第六天

选择题 1. 解析:十进制转换为八进制就是不断的除8,取余数。十进制转换成其他进制的数就是除以进制,取余。 解析:注意printf的转换,%%只会打印一个%,所以选A。 解析:由于()的原因p先和*结合&…

某面试官分享经验:看求职者第一眼,开口说第一句话,面试结果就差不多定了,准确率高达90%以上...

我们以前分享过许多经验,但大多是站在打工人的视角上,今天给大家带来一个面试官的经验:1. 看求职者第一眼,开口说第一句话,面试结果就差不多定了,准确率高达90%以上。2. 绝不考八股文,如果问技术…

docker安装MongoBD(超详细)

一、安装docker 推荐文章:https://blog.csdn.net/Sumuxi9797926/article/details/127313307?spm1001.2014.3001.5502 二、创建主机挂载配置目录 data目录存放mongodb数据库文件,删除重启容器不会丢失 mkdir -p /docker/mongodb/data && cd …

马云回国,首谈ChatGPT

马云今天回国了,这是一个备受关注的消息。 作为中国最具代表性的企业家之一,马云在过去的二十多年里,带领阿里巴巴从一个小小的创业公司,发展成为全球最大的电商平台之一,同时也推动了中国互联网行业的发展。 他的回…

Redis高可用之持久化

目录 一、高可用 什么是高可用 二、Redis持久化 持久化功能 RDB持久化 触发条件 bgsave执行流程 AOF持久化 执行流程 命令追加 文件写入和文件同步 文件重写 文件重写流程 三、RDB和AOF的优缺点 RDB持久化的优缺点 优点 缺点 AOF持久化优缺点 四、Redis性能管…

修改Hive运⾏⽇志的存放位置

默认情况下,Hive的运⾏⽇志存放在/tmp/root/hive.log ⽬录下(root是当前⽤户登录 ⽤户名)。修改hive的⽇志存放到/export/servers/hive/logs⽬录下。1. cd /export/server/hive/conf/,找到下面的文件修改/export/server/hive/conf/hive-log4j…

STM32——毕设远程室内灯光控制系统

运程室内灯光控制系统一、功能设计二、硬件选择三、按键说明四、产品主界面展示一、功能设计 本毕设以STM32 F103C8T6为主控核心板智能灯光控制系统,开发的简单易行的智能灯光控制系统,由智能手机通过蓝牙或无线与单片机系统的蓝牙或无线模块进行通信控制单片机板子上的led进行…

Fail-Fast机制和ConcurrentModificationException并发修改异常

目录说明Fail-Fast机制Fail-Fast机制的理解如何解决Fail-Fast错误机制的问题说明 Fail-Fast机制和ConcurrentModificationException并发修改异常是我们在编写代码的时候经常遇到的问题和异常,我们需要搞清楚这个机制是什么东西并且为什么会抛出这个异常,…

【新】(2023Q2模拟题JAVA)华为OD机试 - 统计差异值大于相似值二元组个数

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:统计差异值大于相似值二元组个…

尚硅谷大数据技术Scala教程-笔记01【Scala课程简介、Scala入门、变量和数据类型、运算符、流程控制】

视频地址:尚硅谷大数据技术之Scala入门到精通教程(小白快速上手scala)_哔哩哔哩_bilibili 尚硅谷大数据技术Scala教程-笔记01【Scala课程简介、Scala入门、变量和数据类型、运算符、流程控制】尚硅谷大数据技术Scala教程-笔记02【函数式编程】…

【求助贴】临危受命,如何救火做到一半的项目?

最近分享了一个关于被临时拉去救火,项目如何起死回生的小视频,没想到引起了大家的共鸣,吐槽了自己的惨痛经历并强烈要求出一个应对策略的详细教程。这也是我职场升级打怪路上一个具有代表性的绊脚石,我当时也请教了一些资深的项目…

1978-2021年全国及各省农业总产值数据

1978-2021年全国及31省农业总产值数据 1978-2021年全国及31省农业总产值数据 1、时间:1978-2021年 2、范围:31省 3、来源:统计NJ、各省NJ、 4、缺失情况:无缺失 5、指标解释说明: 农业总产值是一定时期&#x…

Keil5----跳转定义和查找功能

一、Keil5----跳转定义 跳转定义 鼠标左键点击要查找的变量 方法1: 点击鼠标右键,功能栏中有跳转定义的选项。 方法2: 按快捷键 F12 具体操作如下图所示: 跳转结果 二、Keil5----查找功能 1. 查找功能 鼠标左键点击要查找的变…

数据在内存中的存储(深度剖析)

目录 1.数据类型介绍 1.1类型分类 2.整形在内存中的存储 2.1原码,反码,补码 2.2大小端介绍 2.3练习 3.浮点型在内存中的存储 3.1浮点数存储规则 引入: 有正负的数据可以存放在有符号的变量中 只有正数的数据可以存放在无符号的变量…

Eolink Apikit 创建/生成 API 文档

在 API 研发管理产品中,几乎所有的协作工作都是围绕着 API 文档进行的。 我们在接触了大量的客户后发现,采用 文档驱动 的协作模式会比先开发、后维护文档的方式更好,团队协作效率和产品质量都能得到提高。因此我们建议您尝试基于文档来进行工…

前脚我的 GPT4 被封,后脚收到了文心一言的邀请账号

大家好,我是二哥呀。 一早醒来,我的 ChatGPT Plus 账号就惨遭封禁,很不幸,我刚冲的 Plus 会员,用了不到一周的时间(😭)。 我没用亚洲的IP,所以网上传的那些不使用亚洲IP…