目录
1.加载测试专用属性
2.加载测试专用配置
3测试类中web环境
3.1测试类中启动web环境
3.2.发送虚拟请求
3.3.匹配响应执行状态
3.4.匹配响应体
3.5匹配响应体(json)
3.6.匹配响应头
4..数据层测试事务回滚
5.测试用例测试随机值
前提是你配置好了springboot环境
随便写个测试类
在类名上加上注解@SpringBootTest,然后在里面创建个测试方法,在方法上加注解@Test
然后如果想用临时属性的话,可以通过properties参数设置测试环境专用的属性
例如:
@SpringBootTest(properties={"test.prop=testValue1"})
public class PropertiesTest{
@Value("${test.prop}")
private String msg;
@Test
void test(){
System.out.printLn(msg);
}
}
优点:比多环境开发中的测试环境影响范围小,仅对当前测试类有效
@SpringBootTest(args={"--test.prop=testValue2"})
public class PropertiesTest{
@Value("${test.prop}")
private String msg;
@Test
void test(){
System.out.printLn(msg);
}
}
这种命令行似的临时属性配置优先级较高
先创建一个简单的配置类,在配置类中配置一个简单的bean
然后创建一个测试类,做以下配置@Import()可以导入相关配置类
一个配置用@Import(),多个配置类用@Import({*,*,*,})
还是像之前一样创建个测试类,只不过修改一下@SpringBootTest参数即可
RANDOM_PORT随机端口,考虑实际情况,很有可能你设置的端口会与你服务器上的端口冲突,所以采用随机端口测试比较好。
然后,先随便创建个controller
注意:在测试类中启动的是虚拟的环境,并不是真正的调用,需要使用相关虚拟调用配置
开启虚拟MVC调用@AutoConfigureMockMvc
具体方法调用如下
也可以将参数写到外部装配
@Autowired
private MockMvc mvc;
这个是虚拟环境调用对象,需要用这个对象的perform方法,而这个perform方法所需参数是上图中Builder对象,图中是直接用了实现类的方式直接实现了接口,虚拟环境中的所需路径只需要端口后面的/books,前面的默认已有。
然后运行即可
如果没有该路径,则报错
快速写一个实体类和改造一下controller的方法
现加这个依赖(实体类需要)
实体类
然后这个就可以返回json数据了,接下来进行测试
与上一个很类似,就content的方法不一致json的参数就是你想得到的json数据,直接从外界复制到这里即可,idea会为你处理好格式。
其中header.string(name,value)参数 是名称和值
多个测试规则合并
在测试类上加@Transactional,测试类中的测试方法就可以不会真的执行,数据库并不会真的操作该类的方法。因为这里默认@Rollback(true),所以会回滚事务
若是再加上@Rollback(false)这里还是会执行该操作,数据库会有所变化。
在yml中设置随机数,一般采用多环境开发例如创建个application-test.yml
@Component
@Data
@ConnfigurationProperties(prefix="testcase.book")
public class BookCase{
private int id;
private String name;
private String uuid;
private long publishTime;
}