• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

Spring Boot 单元测试详解+实战教程

技术杂谈 勤劳的小蚂蚁 3个月前 (01-24) 71次浏览 已收录 0个评论 扫描二维码

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 的依赖关系图。
以上这些都是 Spring Boot 提供的一些比较常用的测试类库,如果上面的还不能满足你的需要,你也可以随意添加其他的以上没有的类库。

测试 Spring Boot 应用程序

添加 Maven 依赖
  1. <dependency>
  2.    <groupId>org.springframework.boot</groupId>
  3.    <artifactId>spring-boot-starter-test</artifactId>
  4.    <version>1.5.10.RELEASE</version>
  5.    <scope>test</scope>
  6. </dependency>
1、 要让一个普通类变成一个单元测试类只需要在类名上加入 @SpringBootTest 和 @RunWith(SpringRunner.class) 两个注释即可。
2、 在测试方法上加上 @Test 注释。
如果测试需要做 REST 调用,可以 @Autowire 一个 TestRestTemplate。
  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. publicclassBBTestAA{
  4.   @Autowired
  5.   privateTestRestTemplate testRestTemplate;
  6.   @Test
  7.   publicvoid testDemo(){
  8.    ...
  9.  
  10. }
GET请求测试
  1. @Test
  2. publicvoidget()throwsException{
  3.    Map<String,String> multiValueMap =newHashMap<>();
  4.    multiValueMap.put("username","Java技术栈");
  5.    ActResult result = testRestTemplate.getForObject("/test/getUser?username={username}",ActResult.class,multiValueMap);
  6.    Assert.assertEquals(result.getCode(),0);
  7. }
POST请求测试
  1. @Test
  2. publicvoid post()throwsException{
  3.    MultiValueMap multiValueMap =newLinkedMultiValueMap();
  4.    multiValueMap.add("username","Java技术栈");
  5.    ActResult result = testRestTemplate.postForObject("/test/post",multiValueMap,ActResult.class);
  6.    Assert.assertEquals(result.getCode(),0);
  7. }
文件上传测试
  1. @Test
  2. publicvoid upload()throwsException{
  3.    Resource resource =newFileSystemResource("/home/javastack/test.jar");
  4.    MultiValueMap multiValueMap =newLinkedMultiValueMap();
  5.    multiValueMap.add("username","Java技术栈");
  6.    multiValueMap.add("files",resource);
  7.    ActResult result = testRestTemplate.postForObject("/test/upload",multiValueMap,ActResult.class);
  8.    Assert.assertEquals(result.getCode(),0);
  9. }
文件下载测试
  1. @Test
  2. publicvoid download()throwsException{
  3.    HttpHeaders headers =newHttpHeaders();
  4.    headers.set("token","javastack");
  5.    HttpEntity formEntity =newHttpEntity(headers);
  6.    String[] urlVariables =newString[]{"admin"};
  7.    ResponseEntity<byte[]> response = testRestTemplate.exchange("/test/download?username={1}",HttpMethod.GET,formEntity,byte[].class,urlVariables);
  8.    if(response.getStatusCode()==HttpStatus.OK){
  9.        Files.write(response.getBody(),newFile("/home/javastack/test.jar"));
  10.    }
  11. }

丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Spring Boot 单元测试详解+实战教程
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00