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

  

  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 {

  MapmultiValueMap = 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};

  ResponseEntityresponse = 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));

  }

  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值