博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 单元测试详解+实战教程
阅读量:6695 次
发布时间:2019-06-25

本文共 2682 字,大约阅读时间需要 8 分钟。

Spring Boot 的测试类库

Spring Boot 提供了许多实用工具和注解来帮助测试应用程序,主要包括以下两个模块。

  • spring-boot-test:支持测试的核心内容。

  • spring-boot-test-autoconfigure:支持测试的自动化配置。

开发进行只要使用 spring-boot-starter-test 启动器就能引入这些 Spring Boot 测试模块,还能引入一些像 JUnit, AssertJ, Hamcrest 及其他一些有用的类库,具体如下所示。

  • JUnit:Java 应用程序单元测试标准类库。
  • Spring Test & Spring Boot Test:Spring Boot 应用程序功能集成化测试支持。
  • AssertJ:一个轻量级的断言类库。
  • Hamcrest:一个对象匹配器类库。
  • Mockito:一个Java Mock测试框架,默认支付 1.x,可以修改为 2.x。
  • JSONassert:一个用于JSON的断言库。
  • JsonPath:一个JSON操作类库。

下面是 Maven 的依赖关系图。

image

以上这些都是 Spring Boot 提供的一些比较常用的测试类库,如果上面的还不能满足你的需要,你也可以随意添加其他的以上没有的类库。

测试 Spring Boot 应用程序

添加 Maven 依赖

org.springframework.boot
spring-boot-starter-test
1.5.10.RELEASE
test

1、 要让一个普通类变成一个单元测试类只需要在类名上加入 @SpringBootTest 和 @RunWith(SpringRunner.class) 两个注释即可。

2、 在测试方法上加上 @Test 注释。

如果测试需要做 REST 调用,可以 @Autowire 一个 TestRestTemplate。

@RunWith(SpringRunner.class)@SpringBootTestpublic class BBTestAA {   @Autowired   private TestRestTemplate testRestTemplate;      @Test   public void testDemo() {    ...   }    }

GET请求测试

@Testpublic void get() throws Exception {    Map
multiValueMap = new HashMap<>(); multiValueMap.put("username","Java技术栈"); ActResult result = testRestTemplate.getForObject("/test/getUser?username={username}",ActResult.class,multiValueMap); Assert.assertEquals(result.getCode(),0);}

POST请求测试

@Testpublic void post() throws Exception {    MultiValueMap multiValueMap = new LinkedMultiValueMap();    multiValueMap.add("username","Java技术栈");    ActResult result = testRestTemplate.postForObject("/test/post",multiValueMap,ActResult.class);    Assert.assertEquals(result.getCode(),0);}

文件上传测试

@Testpublic void upload() throws Exception {    Resource resource = new FileSystemResource("/home/javastack/test.jar");    MultiValueMap multiValueMap = new LinkedMultiValueMap();    multiValueMap.add("username","Java技术栈");    multiValueMap.add("files",resource);    ActResult result = testRestTemplate.postForObject("/test/upload",multiValueMap,ActResult.class);    Assert.assertEquals(result.getCode(),0);}

文件下载测试

@Testpublic void download() throws Exception {    HttpHeaders headers = new HttpHeaders();    headers.set("token","javastack");    HttpEntity formEntity = new HttpEntity(headers);    String[] urlVariables = new String[]{"admin"};    ResponseEntity
response = testRestTemplate.exchange("/test/download?username={1}",HttpMethod.GET,formEntity,byte[].class,urlVariables); if (response.getStatusCode() == HttpStatus.OK) { Files.write(response.getBody(),new File("/home/javastack/test.jar")); }}

推荐:

扫描关注我们的微信公众号,干货每天更新。

image

转载地址:http://nytoo.baihongyu.com/

你可能感兴趣的文章
System.InvalidOperationException : 不应有 <Response xmlns=''>。
查看>>
Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)
查看>>
AS 2.0新功能 Instant Run
查看>>
解决 windows10和ubuntu16.04双系统下时间不对的问题
查看>>
MySQL auto_increment初始值设置
查看>>
iOS逆向工程(简单利用"dumpdecrypted"给ipa砸壳)
查看>>
Spark分布式集群的搭建和运行
查看>>
python爬虫从入门到放弃(六)之 BeautifulSoup库的使用
查看>>
Java Map 怎样实现Key 的唯一性?
查看>>
PHP函数处理方法总结
查看>>
Petuum - Careers
查看>>
Kafka官方文档翻译——实现
查看>>
2014-7-29-阿里电面-第一轮
查看>>
JAVA并发编程
查看>>
php动态获取函数参数
查看>>
Error: Java heap space
查看>>
JSP中的:request.getScheme()+"://"+request.getServerName()+":"+request.getServer
查看>>
vue用阿里云oss上传图片使用分片上传只能上传100kb以内的解决办法
查看>>
图tp delDataById问题
查看>>
[CSS3] :empty Selector
查看>>