springboot----项目测试(部分)

加载测试环境中专用的属性或Bean(Bean可为配置类)

某些属性或配置,我们只想让其在测试阶段生效,可如下:

加载测试专用属性

在测试阶段,我们可以加载测试专用属性,我们可以把一些数据加载到测试里,并让他只在测试这部分中生效
如下,有两种方式
在这里插入图片描述
注意: 上面参数那里,多个参数用{}即数组,一个就不需要用数组的形式

加载测试专用bean

不仅能注入属性值,还能注入Bean
这里,先创建一个简单的Bean当做配置类,其中的方法返回一个第三方的对象,这里随便写了一个,正常一点的话,这里可以搞一个mp中的拦截器,搞分页操作什么的
在这里插入图片描述
如果不是配置类,或者第三方的Bean,则也可通过在类上面加@Component来注入容器


然后在测试的环境中这么做:
在这里插入图片描述

小tip

idea中ctrl+F12可以查看对应类所拥有的方法,常用于阅读源码时

测试阶段中web环境的测试

测试阶段启动web环境

测试阶段启动web环境,一般测试的时候不会启动web环境,但我们可以通过配置来使在test环境下也能启动web环境:
在这里插入图片描述

不使用postman在test环境中测试web请求

实质是springboot模拟的MVC调用发送请求
大致分为四个步骤

  1. 在测试的环境上加上注解:@AutoConfigureMockMvc表示开启虚拟MVC的调用,注意,这个注解的后面部分是MockMvc,这是虚拟调用对象的类。同时开启测试中的web环境:即@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)就是上面那部分测试阶段启动web环境里面的知识
  2. 得到虚拟调用的对象,即MockMvc的实例,我们主要使用这个实例中的perform()方法,这个方式就是发送模拟的请求,但是这个方法需要一个RequestBuilder类型的对象
  3. 得到并设置RequestBuilder类型的对象,RequestBuilder是个接口,我们这里可以用MockHttpServletRequestBuilder这个实现类。这里我们不通过直接new这个类获得对象,通过一个工具类来得到对象,即MockMvcRequestBuilders.请求方式("url")来得到对象,url不用写前面的http://localhost:端口号这一部分,因为这部分已经由springboot在web环境中完成
  4. 调用方法,传入对象,抛出异常

图解:
在这里插入图片描述

测试响应数据的正确性

主要是通过设置预计的响应结果跟请求中的真实结果进行比较来判断正确性

匹配响应数据,大致分为这三步
1.创建可以包含所要匹配的数据的对象。在MockMvc中为我们定义了一个接口,叫做结果匹配器,这个东西可以为我们设置各种各样的预期值
2.向这个对象中添加所要匹配的数据值,通过添加数据值后,我们才能得到一个预计的结果,这个结果是一个对象,稍后需要在’本地调用’的对象中进行匹配
3.匹配,传入预期的结果生成的那个对象,在’本地调用’的对象中进行匹配,若匹配失败,返回相关信息,若成功,无返回值

图解:
在这里插入图片描述
再三个例子:

  1. 匹配响应体
    在这里插入图片描述

  2. 匹配Json格式的响应体
    在这里插入图片描述

  3. 匹配响应头中的数据
    在这里插入图片描述

在开发的环境下,为了测试一个请求响应的准确正确性,我们应该在测试一个请求响应的时候,尽可能把上面这些全给测一遍,这样能保证更高的准确性,如下,这样搞:
在这里插入图片描述

小tip

重要的一点,通过这三个例子,我们能看出来一些规律,比如匹配响应体的对象是:StatusResultMatchers,其他的比如响应头是:HeaderResultMatchers,就此我们就能退出来一些其他的匹配。对于其他的一些匹配,在我们写出一些消息后,idea基本就能给到我们所需要的提示,直接用那就行,比如下面,后续的所调用的方法,看方法名就能明白
在这里插入图片描述

测试数据层面操作

事务回滚

在对数据表更改的部分进行测试的时候,我们不希望测试中的数据对数据表产生实质性的变更,只测试功能的可行性,则我们可以通过下面这种方式为DAO层的测试操作加上一个事务,并设置回滚,这样就会不会把数据实质化到数据表中了
在这里插入图片描述

用随机数据做测试

测试中用随机产生数据做测试要比用一个固定的数据做测试要好:
测试中所需的配置属性应该另外写一个配置文件作为测试专用的,这里可以用多环境开发https://blog.csdn.net/qq_45821251/article/details/123294799

下面就是写在配置文件中的
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45821251/article/details/123339501