1、功能测试类

package com.imooc.controller;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.Assert;
import org.springframework.web.client.ResponseErrorHandler;
import org.springframework.web.client.RestTemplate; import com.imooc.entity.Product;
import com.imooc.entity.enums.ProductStatus;
import com.imooc.util.RestUtil; @RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
@FixMethodOrder(MethodSorters.NAME_ASCENDING) // case执行顺序
public class ProductControllerTest { // @Autowired
// private TestRestTemplate rest; private static RestTemplate rest = new RestTemplate(); @Value("http://localhost:${local.server.port}/products")
private String baseUrl; // 正常数据
private static List<Product> normals = new ArrayList<>(); private static List<Product> exceptions = new ArrayList<>(); @Before
public void init(){ Product p1 = new Product("T0001", "零活宝1号", ProductStatus.AUDITING.getCode(),
BigDecimal.valueOf(10), BigDecimal.valueOf(1), 7,
BigDecimal.valueOf(3.42), "memo", new Date(), new Date(), "zemel", "zemel");
Product p2 = new Product("T0002", "零活宝2号", ProductStatus.AUDITING.getCode(),
BigDecimal.valueOf(10), BigDecimal.valueOf(0), 6,
BigDecimal.valueOf(3.42), "memo", new Date(), new Date(), "zemel", "zemel");
Product p3 = new Product("T0003", "零活宝3号", ProductStatus.AUDITING.getCode(),
BigDecimal.valueOf(100), BigDecimal.valueOf(10),3,
BigDecimal.valueOf(3.42), "memo", new Date(), new Date(), "zemel", "zemel");
normals.add(p1);
normals.add(p2);
normals.add(p3); Product e1 = new Product(null, "零活宝1号", ProductStatus.AUDITING.getCode(),
BigDecimal.valueOf(10), BigDecimal.valueOf(1), 7,
BigDecimal.valueOf(3.42), "memo", new Date(), new Date(), "zemel", "zemel");
exceptions.add(e1); // 异常处理对象
ResponseErrorHandler errorHandler = new ResponseErrorHandler() { @Override
public boolean hasError(ClientHttpResponse response) throws IOException { return true;
} @Override
public void handleError(ClientHttpResponse response) throws IOException {
// TODO Auto-generated method stub }
};
rest.setErrorHandler(errorHandler);
} @Test
public void testAddProduct() {
normals.forEach(product -> {
Product result = RestUtil.postJSON(rest, baseUrl, product, Product.class);
Assert.notNull(result.getCreateAt(), "插入失败");
});
} @Test
public void testAddProductException() {
exceptions.forEach(product -> {
Map<String, String> result = RestUtil.postJSON(rest, baseUrl, product, HashMap.class);
// Assert.notNull(result.getCreateAt(), "插入失败");
System.out.println(result);
Assert.notNull(result.get("message").equals(product.getName()), "插入成功");
});
} @Test
public void testFindOne() {
normals.forEach(p->{ Product result = rest.getForObject(baseUrl+"/"+p.getId(), Product.class);
Assert.isTrue(result.getId().equals(p.getId()));
}); exceptions.forEach(p->{
Product result = rest.getForObject(baseUrl+"/"+p.getId(), Product.class);
Assert.isNull(result, "查询失败"); });
} @Test
public void testQuery() { // Page<Product> page = rest.getForObject(baseUrl, "", Page.class); Map<String, Object> params = new HashMap<>();
params.put("ids", "T0001,T0002");
// Page<Product> page = RestUtil.postJSON(rest, baseUrl, params, Page.class); Map page = rest.getForObject(baseUrl, HashMap.class, params);
System.out.println(page);
System.out.println(page.get("pageable"));
System.out.println(page.get("content"));
Assert.notNull(page);
} }

2、工具类

package com.imooc.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate; import java.util.Arrays;
import java.util.List;
import java.util.Map; public class RestUtil { static Logger log = LoggerFactory.getLogger(RestUtil.class); /**
* 发送post 请求
*
* @param restTemplate
* @param url
* @param param
* @param responseType
* @param <T>
* @return
*/
public static <T> T postJSON(RestTemplate restTemplate, String url, Object param, Class<T> responseType) {
HttpEntity<String> formEntity = makePostJSONEntiry(param);
T result = restTemplate.postForObject(url, formEntity, responseType);
log.info("rest-post-json 响应信息:{}", JsonUtil.toJson(result));
return result;
} /**
* 生成json形式的请求头
*
* @param param
* @return
*/
public static HttpEntity<String> makePostJSONEntiry(Object param) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);
HttpEntity<String> formEntity = new HttpEntity<String>(
JsonUtil.toJson(param), headers);
log.info("rest-post-json-请求参数:{}", formEntity.toString());
return formEntity;
} public static HttpEntity<String> makePostTextEntiry(Map<String, ? extends Object> param) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);
HttpEntity<String> formEntity = new HttpEntity<String>(
makeGetParamContent(param), headers);
log.info("rest-post-text-请求参数:{}", formEntity.toString());
return formEntity;
} /**
* 生成Get请求内容
*
* @param param
* @param excluedes
* @return
*/
public static String makeGetParamContent(Map<String, ? extends Object> param, String... excluedes) {
StringBuilder content = new StringBuilder();
List<String> excludeKeys = Arrays.asList(excluedes);
param.forEach((key, v) -> {
content.append(key).append("=").append(v).append("&");
});
if (content.length() > 0) {
content.deleteCharAt(content.length() - 1);
}
return content.toString();
}
}

Json对象转换成Josn数组

最新文章

  1. 关于EJB的理解
  2. 纪念逝去的岁月——C/C++字符串回文
  3. 技术分享:逆向海盗船k95机械键盘
  4. 使用ExpandableListView实现一个时光轴
  5. c# windows 服务学习
  6. C#比较两个时间大小
  7. little bird
  8. Bzoj4805: 欧拉函数求和
  9. java操作数据库的通用的类
  10. Lintcode391 Number of Airplanes in the Sky solution 题解
  11. Python内置方法中不明了的部分
  12. Sql Server 的参数化查询
  13. spring事务源码分析结合mybatis源码(二)
  14. 目标检测(四)Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
  15. 直接从硬盘安装centos7网址整理
  16. Expm 3_2 寻找最邻近的点对
  17. mybatis的selectOne和selectList没有数据返回时的问题
  18. 2018/03/29 每日一个Linux命令 之 ping
  19. js基础学习笔记(五)
  20. EditPlus 4.3.2463 中文版已经发布(10月16日更新)

热门文章

  1. centos安装pm2报错
  2. Latex使用CJK包添加字体
  3. robotframework-ride快捷方式打不开
  4. Jackson &amp; fastJson的使用
  5. 1.在项目中使用D3.js
  6. JAVA线上常见问题排查手段(小结)
  7. SpringCloud升级之路2020.0.x版-34.验证重试配置正确性(2)
  8. 菜鸡的Java笔记
  9. Typora常用操作
  10. 接上篇:Git Worktree 高级使用,这样清爽多了