clean history

This commit is contained in:
Looly
2019-08-14 10:02:32 +08:00
commit 6b011af032
1215 changed files with 159913 additions and 0 deletions

View File

@@ -0,0 +1,199 @@
package cn.hutool.json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.json.test.bean.Exam;
import cn.hutool.json.test.bean.JsonNode;
import cn.hutool.json.test.bean.KeyBean;
/**
* JSONArray单元测试
*
* @author Looly
*
*/
public class JSONArrayTest {
@Test
public void addTest() {
// 方法1
JSONArray array = JSONUtil.createArray();
// 方法2
// JSONArray array = new JSONArray();
array.add("value1");
array.add("value2");
array.add("value3");
Assert.assertEquals(array.get(0), "value1");
}
@Test
public void parseTest() {
String jsonStr = "[\"value1\", \"value2\", \"value3\"]";
JSONArray array = JSONUtil.parseArray(jsonStr);
Assert.assertEquals(array.get(0), "value1");
}
@Test
public void parseFileTest() {
JSONArray array = JSONUtil.readJSONArray(FileUtil.file("exam_test.json"), CharsetUtil.CHARSET_UTF_8);
JSONObject obj0 = array.getJSONObject(0);
Exam exam = JSONUtil.toBean(obj0, Exam.class);
Assert.assertEquals("0", exam.getAnswerArray()[0].getSeq());
}
@Test
@Ignore
public void parseBeanListTest() {
KeyBean b1 = new KeyBean();
b1.setAkey("aValue1");
b1.setBkey("bValue1");
KeyBean b2 = new KeyBean();
b2.setAkey("aValue2");
b2.setBkey("bValue2");
ArrayList<KeyBean> list = CollUtil.newArrayList(b1, b2);
JSONArray jsonArray = JSONUtil.parseArray(list);
Console.log(jsonArray);
}
@Test
public void toListTest() {
String jsonStr = FileUtil.readString("exam_test.json", CharsetUtil.CHARSET_UTF_8);
JSONArray array = JSONUtil.parseArray(jsonStr);
List<Exam> list = array.toList(Exam.class);
Assert.assertFalse(list.isEmpty());
Assert.assertEquals(Exam.class, list.get(0).getClass());
;
}
@Test
public void toListTest2() {
String jsonArr = "[{\"id\":111,\"name\":\"test1\"},{\"id\":112,\"name\":\"test2\"}]";
JSONArray array = JSONUtil.parseArray(jsonArr);
List<User> userList = JSONUtil.toList(array, User.class);
Assert.assertFalse(userList.isEmpty());
Assert.assertEquals(User.class, userList.get(0).getClass());
Assert.assertEquals(Integer.valueOf(111), userList.get(0).getId());
Assert.assertEquals(Integer.valueOf(112), userList.get(1).getId());
Assert.assertEquals("test1", userList.get(0).getName());
Assert.assertEquals("test2", userList.get(1).getName());
}
@Test
public void toDictListTest() {
String jsonArr = "[{\"id\":111,\"name\":\"test1\"},{\"id\":112,\"name\":\"test2\"}]";
JSONArray array = JSONUtil.parseArray(jsonArr);
List<Dict> list = JSONUtil.toList(array, Dict.class);
Assert.assertFalse(list.isEmpty());
Assert.assertEquals(Dict.class, list.get(0).getClass());
Assert.assertEquals(Integer.valueOf(111), list.get(0).getInt("id"));
Assert.assertEquals(Integer.valueOf(112), list.get(1).getInt("id"));
Assert.assertEquals("test1", list.get(0).getStr("name"));
Assert.assertEquals("test2", list.get(1).getStr("name"));
}
@Test
public void toArrayTest() {
String jsonStr = FileUtil.readString("exam_test.json", CharsetUtil.CHARSET_UTF_8);
JSONArray array = JSONUtil.parseArray(jsonStr);
Exam[] list = array.toArray(new Exam[0]);
Assert.assertFalse(0 == list.length);
Assert.assertEquals(Exam.class, list[0].getClass());
}
/**
* 单元测试用于测试在列表元素中有null时的情况下是否出错
*/
@Test
public void toListWithNullTest() {
String json = "[null,{'akey':'avalue','bkey':'bvalue'}]";
JSONArray ja = JSONUtil.parseArray(json);
List<KeyBean> list = ja.toList(KeyBean.class);
Assert.assertTrue(null == list.get(0));
Assert.assertEquals("avalue", list.get(1).getAkey());
Assert.assertEquals("bvalue", list.get(1).getBkey());
}
@Test
public void toBeanListTest() {
List<Map<String, String>> mapList = new ArrayList<>();
mapList.add(buildMap("0", "0", "0"));
mapList.add(buildMap("1", "1", "1"));
mapList.add(buildMap("+0", "+0", "+0"));
mapList.add(buildMap("-0", "-0", "-0"));
JSONArray jsonArray = JSONUtil.parseArray(mapList);
List<JsonNode> nodeList = jsonArray.toList(JsonNode.class);
Assert.assertEquals(Long.valueOf(0L), nodeList.get(0).getId());
Assert.assertEquals(Long.valueOf(1L), nodeList.get(1).getId());
Assert.assertEquals(Long.valueOf(0L), nodeList.get(2).getId());
Assert.assertEquals(Long.valueOf(0L), nodeList.get(3).getId());
Assert.assertEquals(Integer.valueOf(0), nodeList.get(0).getParentId());
Assert.assertEquals(Integer.valueOf(1), nodeList.get(1).getParentId());
Assert.assertEquals(Integer.valueOf(0), nodeList.get(2).getParentId());
Assert.assertEquals(Integer.valueOf(0), nodeList.get(3).getParentId());
Assert.assertEquals("0", nodeList.get(0).getName());
Assert.assertEquals("1", nodeList.get(1).getName());
Assert.assertEquals("+0", nodeList.get(2).getName());
Assert.assertEquals("-0", nodeList.get(3).getName());
}
private static Map<String, String> buildMap(String id, String parentId, String name) {
Map<String, String> map = new HashMap<>();
map.put("id", id);
map.put("parentId", parentId);
map.put("name", name);
return map;
}
class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
}

View File

@@ -0,0 +1,106 @@
package cn.hutool.json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.json.test.bean.ExamInfoDict;
import cn.hutool.json.test.bean.PerfectEvaluationProductResVo;
import cn.hutool.json.test.bean.UserInfoDict;
/**
* JSON转换单元测试
*
* @author Looly质量过关
*
*/
public class JSONConvertTest {
@Test
public void testBean2Json() {
UserInfoDict userInfoDict = new UserInfoDict();
userInfoDict.setId(1);
userInfoDict.setPhotoPath("yx.mm.com");
userInfoDict.setRealName("质量过关");
ExamInfoDict examInfoDict = new ExamInfoDict();
examInfoDict.setId(1);
examInfoDict.setExamType(0);
examInfoDict.setAnswerIs(1);
ExamInfoDict examInfoDict1 = new ExamInfoDict();
examInfoDict1.setId(2);
examInfoDict1.setExamType(0);
examInfoDict1.setAnswerIs(0);
ExamInfoDict examInfoDict2 = new ExamInfoDict();
examInfoDict2.setId(3);
examInfoDict2.setExamType(1);
examInfoDict2.setAnswerIs(0);
List<ExamInfoDict> examInfoDicts = new ArrayList<ExamInfoDict>();
examInfoDicts.add(examInfoDict);
examInfoDicts.add(examInfoDict1);
examInfoDicts.add(examInfoDict2);
userInfoDict.setExamInfoDict(examInfoDicts);
Map<String, Object> tempMap = new HashMap<String, Object>();
tempMap.put("userInfoDict", userInfoDict);
tempMap.put("toSendManIdCard", 1);
JSONObject obj = JSONUtil.parseObj(tempMap);
Assert.assertEquals(new Integer(1), obj.getInt("toSendManIdCard"));
JSONObject examInfoDictsJson = obj.getJSONObject("userInfoDict");
Assert.assertEquals(new Integer(1), examInfoDictsJson.getInt("id"));
Assert.assertEquals("质量过关", examInfoDictsJson.getStr("realName"));
Object id = JSONUtil.getByPath(obj, "userInfoDict.examInfoDict[0].id");
Assert.assertEquals(1, id);
}
@Test
public void testJson2Bean() {
// language=JSON
String examJson = "{\n" + " \"examInfoDicts\": {\n" + " \"id\": 1,\n" + " \"realName\": \"质量过关\",\n" //
+ " \"examInfoDict\": [\n" + " {\n" + " \"id\": 1,\n" + " \"answerIs\": 1,\n" + " \"examType\": 0\n" //
+ " },\n" + " {\n" + " \"id\": 2,\n" + " \"answerIs\": 0,\n" + " \"examType\": 0\n" + " },\n" //
+ " {\n" + " \"id\": 3,\n" + " \"answerIs\": 0,\n" + " \"examType\": 1\n" + " }\n" + " ],\n" //
+ " \"photoPath\": \"yx.mm.com\"\n" + " },\n" + " \"toSendManIdCard\": 1\n" + "}";
JSONObject jsonObject = JSONUtil.parseObj(examJson).getJSONObject("examInfoDicts");
UserInfoDict userInfoDict = jsonObject.toBean(UserInfoDict.class);
Assert.assertEquals(userInfoDict.getId(), new Integer(1));
Assert.assertEquals(userInfoDict.getRealName(), "质量过关");
//============
String jsonStr = "{\"id\":null,\"examInfoDict\":[{\"answerIs\":1, \"id\":null}]}";//JSONUtil.toJsonStr(userInfoDict1);
JSONObject jsonObject2 = JSONUtil.parseObj(jsonStr);//.getJSONObject("examInfoDicts");
UserInfoDict userInfoDict2 = jsonObject2.toBean(UserInfoDict.class);
Assert.assertNull(userInfoDict2.getId());
}
/**
* 针对Bean中Setter返回this测试是否可以成功调用Setter方法并注入
*/
@Test
public void testJson2Bean2() {
String jsonStr = ResourceUtil.readUtf8Str("evaluation.json");
JSONObject obj = JSONUtil.parseObj(jsonStr);
PerfectEvaluationProductResVo vo = obj.toBean(PerfectEvaluationProductResVo.class);
Assert.assertEquals(obj.getStr("HA001"), vo.getHA001());
Assert.assertEquals(obj.getInt("costTotal"), vo.getCostTotal());
}
}

View File

@@ -0,0 +1,460 @@
package cn.hutool.json;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.test.bean.JSONBean;
import cn.hutool.json.test.bean.ResultDto;
import cn.hutool.json.test.bean.Seq;
import cn.hutool.json.test.bean.TokenAuthResponse;
import cn.hutool.json.test.bean.TokenAuthWarp2;
import cn.hutool.json.test.bean.UserA;
import cn.hutool.json.test.bean.UserB;
import cn.hutool.json.test.bean.UserWithMap;
import cn.hutool.json.test.bean.report.CaseReport;
import cn.hutool.json.test.bean.report.StepReport;
import cn.hutool.json.test.bean.report.SuiteReport;
/**
* JSONObject单元测试
*
* @author Looly
*
*/
public class JSONObjectTest {
@Test
@Ignore
public void toStringTest() {
String str = "{\"code\": 500, \"data\":null}";
JSONObject jsonObject = new JSONObject(str);
Console.log(jsonObject);
jsonObject.getConfig().setIgnoreNullValue(true);
Console.log(jsonObject.toStringPretty());
}
@Test
public void toStringTest2() {
String str = "{\"test\":\"关于开展2018年度“文明集体”、“文明职工”评选表彰活动的通知\"}";
JSONObject json = new JSONObject(str);
Assert.assertEquals(str, json.toString());
}
/**
* 测试JSON中自定义日期格式输出正确性
*/
@Test
public void toStringTest3() {
JSONObject json = JSONUtil.createObj()//
.put("dateTime", DateUtil.parse("2019-05-02 22:12:01"))//
.setDateFormat(DatePattern.NORM_DATE_PATTERN);
Assert.assertEquals("{\"dateTime\":\"2019-05-02\"}", json.toString());
}
@Test
public void toStringWithDateTest() {
JSONObject json = JSONUtil.createObj().put("date", DateUtil.parse("2019-05-08 19:18:21"));
Assert.assertEquals("{\"date\":1557314301000}", json.toString());
json = JSONUtil.createObj().put("date", DateUtil.parse("2019-05-08 19:18:21")).setDateFormat(DatePattern.NORM_DATE_PATTERN);
Assert.assertEquals("{\"date\":\"2019-05-08\"}", json.toString());
}
@Test
public void putAllTest() {
JSONObject json1 = JSONUtil.createObj();
json1.put("a", "value1");
json1.put("b", "value2");
json1.put("c", "value3");
json1.put("d", true);
JSONObject json2 = JSONUtil.createObj();
json2.put("a", "value21");
json2.put("b", "value22");
// putAll操作会覆盖相同key的值因此a,b两个key的值改变c的值不变
json1.putAll(json2);
Assert.assertEquals(json1.get("a"), "value21");
Assert.assertEquals(json1.get("b"), "value22");
Assert.assertEquals(json1.get("c"), "value3");
}
@Test
public void parseStringTest() {
String jsonStr = "{\"b\":\"value2\",\"c\":\"value3\",\"a\":\"value1\", \"d\": true, \"e\": null}";
JSONObject jsonObject = JSONUtil.parseObj(jsonStr);
Assert.assertEquals(jsonObject.get("a"), "value1");
Assert.assertEquals(jsonObject.get("b"), "value2");
Assert.assertEquals(jsonObject.get("c"), "value3");
Assert.assertEquals(jsonObject.get("d"), true);
Assert.assertTrue(jsonObject.containsKey("e"));
Assert.assertEquals(jsonObject.get("e"), JSONNull.NULL);
}
@Test
public void parseStringTest2() {
String jsonStr = "{\"file_name\":\"RMM20180127009_731.000\",\"error_data\":\"201121151350701001252500000032 18973908335 18973908335 13601893517 201711211700152017112115135420171121 6594000000010100000000000000000000000043190101701001910072 100001100 \",\"error_code\":\"F140\",\"error_info\":\"最早发送时间格式错误该字段可以为空当不为空时正确填写格式为“YYYYMMDDHHMISS”\",\"app_name\":\"inter-pre-check\"}";
JSONObject json = new JSONObject(jsonStr);
Assert.assertEquals("F140", json.getStr("error_code"));
Assert.assertEquals("最早发送时间格式错误该字段可以为空当不为空时正确填写格式为“YYYYMMDDHHMISS”", json.getStr("error_info"));
}
@Test
public void parseStringTest3() {
String jsonStr = "{\"test\":\"体”、“文\"}";
JSONObject json = new JSONObject(jsonStr);
Assert.assertEquals("体”、“文", json.getStr("test"));
}
@Test
@Ignore
public void parseStringWithBomTest() {
String jsonStr = FileUtil.readUtf8String("f:/test/jsontest.txt");
JSONObject json = new JSONObject(jsonStr);
JSONObject json2 = JSONUtil.parseObj(json);
Console.log(json);
Console.log(json2);
}
@Test
public void toBeanTest() {
JSONObject subJson = JSONUtil.createObj().put("value1", "strValue1").put("value2", "234");
JSONObject json = JSONUtil.createObj().put("strValue", "strTest").put("intValue", 123)
// 测试空字符串转对象
.put("doubleValue", "").put("beanValue", subJson).put("list", JSONUtil.createArray().put("a").put("b")).put("testEnum", "TYPE_A");
TestBean bean = json.toBean(TestBean.class);
Assert.assertEquals("a", bean.getList().get(0));
Assert.assertEquals("b", bean.getList().get(1));
Assert.assertEquals("strValue1", bean.getBeanValue().getValue1());
// BigDecimal转换检查
Assert.assertEquals(new BigDecimal("234"), bean.getBeanValue().getValue2());
// 枚举转换检查
Assert.assertEquals(TestEnum.TYPE_A, bean.getTestEnum());
}
@Test
public void toBeanNullStrTest() {
JSONObject json = JSONUtil.createObj()//
.put("strValue", "null")//
.put("intValue", 123)//
.put("beanValue", "null")//
.put("list", JSONUtil.createArray().put("a").put("b"));
TestBean bean = json.toBean(TestBean.class);
// 当JSON中为字符串"null"时应被当作字符串处理
Assert.assertEquals("null", bean.getStrValue());
// 当JSON中为字符串"null"时Bean中的字段类型不匹配应在ignoreError模式下忽略注入
Assert.assertEquals(null, bean.getBeanValue());
}
@Test
public void toBeanTest2() {
UserA userA = new UserA();
userA.setA("A user");
userA.setName("{\n\t\"body\":{\n\t\t\"loginId\":\"id\",\n\t\t\"password\":\"pwd\"\n\t}\n}");
userA.setDate(new Date());
userA.setSqs(CollectionUtil.newArrayList(new Seq("seq1"), new Seq("seq2")));
JSONObject json = JSONUtil.parseObj(userA);
UserA userA2 = json.toBean(UserA.class);
// 测试数组
Assert.assertEquals("seq1", userA2.getSqs().get(0).getSeq());
// 测试带换行符等特殊字符转换是否成功
Assert.assertTrue(StrUtil.isNotBlank(userA2.getName()));
}
@Test
public void toBeanTest3() {
String jsonStr = "{'data':{'userName':'ak','password': null}}";
UserWithMap user = JSONUtil.toBean(JSONUtil.parseObj(jsonStr), UserWithMap.class);
String password = user.getData().get("password");
Assert.assertTrue(user.getData().containsKey("password"));
Assert.assertNull(password);
}
@Test
public void toBeanTest4() {
String json = "{\"data\":{\"b\": \"c\"}}";
UserWithMap map = JSONUtil.toBean(json, UserWithMap.class);
Assert.assertEquals("c", map.getData().get("b"));
}
@Test
public void toBeanTest5() {
String readUtf8Str = ResourceUtil.readUtf8Str("suiteReport.json");
JSONObject json = JSONUtil.parseObj(readUtf8Str);
SuiteReport bean = json.toBean(SuiteReport.class);
// 第一层
List<CaseReport> caseReports = bean.getCaseReports();
CaseReport caseReport = caseReports.get(0);
Assert.assertNotNull(caseReport);
// 第二层
List<StepReport> stepReports = caseReports.get(0).getStepReports();
StepReport stepReport = stepReports.get(0);
Assert.assertNotNull(stepReport);
}
/**
* 在JSON转Bean过程中Bean中字段如果为父类定义的泛型类型则应正确转换此方法用于测试这类情况
*/
@Test
public void toBeanTest6() {
JSONObject json = JSONUtil.createObj().put("targetUrl", "http://test.com").put("success", "true").put("result", JSONUtil.createObj().put("token", "tokenTest").put("userId", "测试用户1"));
TokenAuthWarp2 bean = json.toBean(TokenAuthWarp2.class);
Assert.assertEquals("http://test.com", bean.getTargetUrl());
Assert.assertEquals("true", bean.getSuccess());
TokenAuthResponse result = bean.getResult();
Assert.assertNotNull(result);
Assert.assertEquals("tokenTest", result.getToken());
Assert.assertEquals("测试用户1", result.getUserId());
}
/**
* 泛型对象中的泛型参数如果未定义具体类型按照JSON处理<br>
* 此处用于测试获取泛型类型实际类型错误导致的空指针问题
*/
@Test
public void toBeanTest7() {
String jsonStr = " {\"result\":{\"phone\":\"15926297342\",\"appKey\":\"e1ie12e1ewsdqw1\",\"secret\":\"dsadadqwdqs121d1e2\",\"message\":\"hello world\"},\"code\":100,\"message\":\"validate message\"}";
ResultDto<?> dto = JSONUtil.toBean(jsonStr, ResultDto.class);
Assert.assertEquals("validate message", dto.getMessage());
}
@Test
public void parseBeanTest() {
UserA userA = new UserA();
userA.setName("nameTest");
userA.setDate(new Date());
userA.setSqs(CollectionUtil.newArrayList(new Seq(null), new Seq("seq2")));
JSONObject json = JSONUtil.parseObj(userA, false);
Assert.assertTrue(json.containsKey("a"));
Assert.assertTrue(json.getJSONArray("sqs").getJSONObject(0).containsKey("seq"));
}
@Test
public void parseBeanTest2() {
TestBean bean = new TestBean();
bean.setDoubleValue(111.1);
bean.setIntValue(123);
bean.setList(CollUtil.newArrayList("a", "b", "c"));
bean.setStrValue("strTest");
bean.setTestEnum(TestEnum.TYPE_B);
JSONObject json = JSONUtil.parseObj(bean, false);
// 枚举转换检查
Assert.assertEquals("TYPE_B", json.get("testEnum"));
TestBean bean2 = json.toBean(TestBean.class);
Assert.assertEquals(bean.toString(), bean2.toString());
}
@Test
public void parseBeanTest3() {
JSONObject json = JSONUtil.createObj().put("code", 22).put("data", "{\"jobId\": \"abc\", \"videoUrl\": \"http://a.com/a.mp4\"}");
JSONBean bean = json.toBean(JSONBean.class);
Assert.assertEquals(22, bean.getCode());
Assert.assertEquals("abc", bean.getData().getObj("jobId"));
Assert.assertEquals("http://a.com/a.mp4", bean.getData().getObj("videoUrl"));
}
@Test
public void beanTransTest() {
UserA userA = new UserA();
userA.setA("A user");
userA.setName("nameTest");
userA.setDate(new Date());
JSONObject userAJson = JSONUtil.parseObj(userA);
UserB userB = JSONUtil.toBean(userAJson, UserB.class);
Assert.assertEquals(userA.getName(), userB.getName());
Assert.assertEquals(userA.getDate(), userB.getDate());
}
@Test
public void beanTransTest2() {
UserA userA = new UserA();
userA.setA("A user");
userA.setName("nameTest");
userA.setDate(DateUtil.parse("2018-10-25"));
JSONObject userAJson = JSONUtil.parseObj(userA);
// 自定义日期格式
userAJson.setDateFormat("yyyy-MM-dd");
UserA bean = JSONUtil.toBean(userAJson.toString(), UserA.class);
Assert.assertEquals(DateUtil.parse("2018-10-25"), bean.getDate());
}
@Test
public void beanTransTest3() {
JSONObject userAJson = JSONUtil.createObj().put("a", "AValue").put("name", "nameValue").put("date", "08:00:00");
UserA bean = JSONUtil.toBean(userAJson.toString(), UserA.class);
Assert.assertEquals(DateUtil.today() + " 08:00:00", DateUtil.date(bean.getDate()).toString());
}
@Test
public void parseFromBeanTest() {
UserA userA = new UserA();
userA.setA(null);
userA.setName("nameTest");
userA.setDate(new Date());
JSONObject userAJson = JSONUtil.parseObj(userA);
Assert.assertFalse(userAJson.containsKey("a"));
JSONObject userAJsonWithNullValue = JSONUtil.parseObj(userA, false);
Assert.assertTrue(userAJsonWithNullValue.containsKey("a"));
Assert.assertTrue(userAJsonWithNullValue.containsKey("sqs"));
}
@Test
public void specialCharTest() {
String json = "{\"pattern\": \"[abc]\b\u2001\", \"pattern2Json\": {\"patternText\": \"[ab]\\b\"}}";
JSONObject obj = JSONUtil.parseObj(json);
Assert.assertEquals("[abc]\\b\\u2001", obj.getStrEscaped("pattern"));
Assert.assertEquals("{\"patternText\":\"[ab]\\b\"}", obj.getStrEscaped("pattern2Json"));
}
@Test
public void getStrTest() {
String json = "{\"name\": \"yyb\\nbbb\"}";
JSONObject jsonObject = JSONUtil.parseObj(json);
// 没有转义按照默认规则显示
Assert.assertEquals("yyb\nbbb", jsonObject.getStr("name"));
// 转义按照字符串显示
Assert.assertEquals("yyb\\nbbb", jsonObject.getStrEscaped("name"));
String bbb = jsonObject.getStr("bbb", "defaultBBB");
Console.log(bbb);
}
public static enum TestEnum {
TYPE_A, TYPE_B
}
/**
* 测试Bean
*
* @author Looly
*
*/
public static class TestBean {
private String strValue;
private int intValue;
private Double doubleValue;
private subBean beanValue;
private List<String> list;
private TestEnum testEnum;
public String getStrValue() {
return strValue;
}
public void setStrValue(String strValue) {
this.strValue = strValue;
}
public int getIntValue() {
return intValue;
}
public void setIntValue(int intValue) {
this.intValue = intValue;
}
public Double getDoubleValue() {
return doubleValue;
}
public void setDoubleValue(Double doubleValue) {
this.doubleValue = doubleValue;
}
public subBean getBeanValue() {
return beanValue;
}
public void setBeanValue(subBean beanValue) {
this.beanValue = beanValue;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public TestEnum getTestEnum() {
return testEnum;
}
public void setTestEnum(TestEnum testEnum) {
this.testEnum = testEnum;
}
@Override
public String toString() {
return "TestBean [strValue=" + strValue + ", intValue=" + intValue + ", doubleValue=" + doubleValue + ", beanValue=" + beanValue + ", list=" + list + ", testEnum=" + testEnum + "]";
}
}
/**
* 测试子Bean
*
* @author Looly
*
*/
public static class subBean {
private String value1;
private BigDecimal value2;
public String getValue1() {
return value1;
}
public void setValue1(String value1) {
this.value1 = value1;
}
public BigDecimal getValue2() {
return value2;
}
public void setValue2(BigDecimal value2) {
this.value2 = value2;
}
@Override
public String toString() {
return "subBean [value1=" + value1 + ", value2=" + value2 + "]";
}
}
}

View File

@@ -0,0 +1,22 @@
package cn.hutool.json;
import org.junit.Assert;
import org.junit.Test;
/**
* JSON路径单元测试
*
* @author looly
*
*/
public class JSONPathTest {
@Test
public void getByPathTest() {
String json = "[{\"id\":\"1\",\"name\":\"xingming\"},{\"id\":\"2\",\"name\":\"mingzi\"}]";
Object value = JSONUtil.parseArray(json).getByPath("[0].name");
Assert.assertEquals("xingming", value);
value = JSONUtil.parseArray(json).getByPath("[1].name");
Assert.assertEquals("mingzi", value);
}
}

View File

@@ -0,0 +1,33 @@
package cn.hutool.json;
import org.junit.Assert;
import org.junit.Test;
/**
* JSON字符串格式化单元测试
* @author looly
*
*/
public class JSONStrFormaterTest {
@Test
public void formatTest() {
String json = "{'age':23,'aihao':['pashan','movies'],'name':{'firstName':'zhang','lastName':'san','aihao':['pashan','movies','name':{'firstName':'zhang','lastName':'san','aihao':['pashan','movies']}]}}";
String result = JSONStrFormater.format(json);
Assert.assertNotNull(result);
}
@Test
public void formatTest2() {
String json = "{\"abc\":{\"def\":\"\\\"[ghi]\"}}";
String result = JSONStrFormater.format(json);
Assert.assertNotNull(result);
}
@Test
public void formatTest3() {
String json = "{\"id\":13,\"title\":\"《标题》\",\"subtitle\":\"副标题z'c'z'xv'c'xv\",\"user_id\":6,\"type\":0}";
String result = JSONStrFormater.format(json);
Assert.assertNotNull(result);
}
}

View File

@@ -0,0 +1,130 @@
package cn.hutool.json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.json.test.bean.Price;
import cn.hutool.json.test.bean.UserA;
import cn.hutool.json.test.bean.UserC;
public class JSONUtilTest {
@Test
public void toJsonStrTest() {
UserA a1 = new UserA();
a1.setA("aaaa");
a1.setDate(DateUtil.date());
a1.setName("AAAAName");
UserA a2 = new UserA();
a2.setA("aaaa222");
a2.setDate(DateUtil.date());
a2.setName("AAAA222Name");
ArrayList<UserA> list = CollectionUtil.newArrayList(a1, a2);
HashMap<String, Object> map = CollectionUtil.newHashMap();
map.put("total", 13);
map.put("rows", list);
String str = JSONUtil.toJsonPrettyStr(map);
Assert.assertNotNull(str);
}
@Test
public void toJsonStrTest2() {
Map<String, Object> model = new HashMap<String, Object>();
model.put("mobile", "17610836523");
model.put("type", 1);
Map<String, Object> data = new HashMap<String, Object>();
data.put("model", model);
data.put("model2", model);
JSONObject jsonObject = JSONUtil.parseObj(data);
Assert.assertTrue(jsonObject.containsKey("model"));
Assert.assertEquals(1, jsonObject.getJSONObject("model").getInt("type").intValue());
Assert.assertEquals("17610836523", jsonObject.getJSONObject("model").getStr("mobile"));
// Assert.assertEquals("{\"model\":{\"type\":1,\"mobile\":\"17610836523\"}}", jsonObject.toString());
}
@Test
public void toJsonStrTest3() {
// 验证某个字段为JSON字符串时转义是否规范
JSONObject object = new JSONObject(true);
object.put("name", "123123");
object.put("value", "\\");
object.put("value2", "</");
HashMap<String, String> map = MapUtil.newHashMap();
map.put("user", object.toString());
JSONObject json = JSONUtil.parseObj(map);
Assert.assertEquals("{\"name\":\"123123\",\"value\":\"\\\\\",\"value2\":\"<\\/\"}", json.get("user"));
Assert.assertEquals("{\"user\":\"{\\\"name\\\":\\\"123123\\\",\\\"value\\\":\\\"\\\\\\\\\\\",\\\"value2\\\":\\\"<\\\\/\\\"}\"}", json.toString());
JSONObject json2 = JSONUtil.parseObj(json.toString());
Assert.assertEquals("{\"name\":\"123123\",\"value\":\"\\\\\",\"value2\":\"<\\/\"}", json2.get("user"));
}
/**
* 泛型多层嵌套测试
*/
@Test
public void toBeanTest() {
String json = "{\"ADT\":[[{\"BookingCode\":[\"N\",\"N\"]}]]}";
Price price = JSONUtil.toBean(json, Price.class);
Assert.assertEquals("N", price.getADT().get(0).get(0).getBookingCode().get(0));
}
@Test
public void toBeanTest2() {
// 测试JSONObject转为Bean中字符串字段的情况
String json = "{\"id\":123,\"name\":\"张三\",\"prop\":{\"gender\":\"\", \"age\":18}}";
UserC user = JSONUtil.toBean(json, UserC.class);
Assert.assertNotNull(user.getProp());
String prop = user.getProp();
JSONObject propJson = JSONUtil.parseObj(prop);
Assert.assertEquals("", propJson.getStr("gender"));
Assert.assertEquals(18, propJson.getInt("age").intValue());
// Assert.assertEquals("{\"age\":18,\"gender\":\"男\"}", user.getProp());
}
@Test
public void putByPathTest() {
JSONObject json = new JSONObject();
json.putByPath("aa.bb", "BB");
Assert.assertEquals("{\"aa\":{\"bb\":\"BB\"}}", json.toString());
}
@Test
public void getStrTest() {
String html = "{\"name\":\"Something must have been changed since you leave\"}";
JSONObject jsonObject = JSONUtil.parseObj(html);
Assert.assertEquals("Something must have been changed since you leave", jsonObject.getStr("name"));
}
@Test
public void getStrTest2() {
String html = "{\"name\":\"Something\\u00a0must have been changed since you leave\"}";
JSONObject jsonObject = JSONUtil.parseObj(html);
Assert.assertEquals("Something\\u00a0must\\u00a0have\\u00a0been\\u00a0changed\\u00a0since\\u00a0you\\u00a0leave", jsonObject.getStrEscaped("name"));
}
@Test
public void parseFromXmlTest() {
String s = "<sfzh>640102197312070614</sfzh><sfz>640102197312070614X</sfz><name>aa</name><gender>1</gender>";
JSONObject json = JSONUtil.parseFromXml(s);
Assert.assertEquals(640102197312070614L, json.get("sfzh"));
Assert.assertEquals("640102197312070614X", json.get("sfz"));
Assert.assertEquals("aa", json.get("name"));
Assert.assertEquals(1, json.get("gender"));
}
}

View File

@@ -0,0 +1,78 @@
package cn.hutool.json;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import cn.hutool.core.collection.CollUtil;
/**
* 测试Bean中嵌套List等对象时是否完整转换<br>
* 同时测试私有class是否可以有效实例化
*
* @author looly
*
*/
public class ParseBeanTest {
@Test
public void parseBeanTest() {
C c1 = new C();
c1.setTest("test1");
C c2 = new C();
c2.setTest("test2");
B b1 = new B();
b1.setCs(CollUtil.newArrayList(c1, c2));
B b2 = new B();
b2.setCs(CollUtil.newArrayList(c1, c2));
A a = new A();
a.setBs(CollUtil.newArrayList(b1, b2));
JSONObject json = JSONUtil.parseObj(a);
A a1 = JSONUtil.toBean(json, A.class);
Assert.assertEquals(json.toString(), JSONUtil.toJsonStr(a1));
}
}
class A {
private List<B> bs;
public List<B> getBs() {
return bs;
}
public void setBs(List<B> bs) {
this.bs = bs;
}
}
class B {
private List<C> cs;
public List<C> getCs() {
return cs;
}
public void setCs(List<C> cs) {
this.cs = cs;
}
}
class C {
private String test;
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
}

View File

@@ -0,0 +1,20 @@
package cn.hutool.json.issueIVMD5;
import java.util.List;
import lombok.Data;
@Data
public class BaseResult<E> {
public BaseResult() {
}
private int result;
private List<E> data;
private E data2;
private String nextDataUri;
private String message;
private int dataCount;
}

View File

@@ -0,0 +1,42 @@
package cn.hutool.json.issueIVMD5;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.json.JSONUtil;
public class IssueIVMD5Test {
/**
* 测试泛型对象中有泛型字段的转换成功与否
*/
@Test
public void toBeanTest() {
String jsonStr = ResourceUtil.readUtf8Str("issueIVMD5.json");
TypeReference<BaseResult<StudentInfo>> typeReference = new TypeReference<BaseResult<StudentInfo>>() {};
BaseResult<StudentInfo> bean = JSONUtil.toBean(jsonStr, typeReference.getType(), false);
StudentInfo data2 = bean.getData2();
Assert.assertEquals("B4DDF491FDF34074AE7A819E1341CB6C", data2.getAccountId());
}
/**
* 测试泛型对象中有包含泛型字段的类型的转换成功与否比如List&lt;T&gt; list
*/
@Test
public void toBeanTest2() {
String jsonStr = ResourceUtil.readUtf8Str("issueIVMD5.json");
TypeReference<BaseResult<StudentInfo>> typeReference = new TypeReference<BaseResult<StudentInfo>>() {};
BaseResult<StudentInfo> bean = JSONUtil.toBean(jsonStr, typeReference.getType(), false);
List<StudentInfo> data = bean.getData();
StudentInfo studentInfo = data.get(0);
Assert.assertEquals("B4DDF491FDF34074AE7A819E1341CB6C", studentInfo.getAccountId());
}
}

View File

@@ -0,0 +1,28 @@
package cn.hutool.json.issueIVMD5;
import lombok.Data;
@Data
public class StudentInfo {
private String birthday;
private String linkPhone;
private String nation;
private String studentCode;
private String unitiveCode;
private String sex;
private String linkAddress;
private String identityCard;
private String accountId;
private String classId;
private String password;
private String modifyTime;
private String isDeleted;
private String postalcode;
private String background;
private String schoolId;
private String studentName;
private String sequenceIntId;
private String nativePlace;
private String id;
private String username;
}

View File

@@ -0,0 +1,16 @@
package cn.hutool.json.test.bean;
import java.util.List;
public class ADT {
private List<String> BookingCode;
public void setBookingCode(List<String> BookingCode) {
this.BookingCode = BookingCode;
}
public List<String> getBookingCode() {
return BookingCode;
}
}

View File

@@ -0,0 +1,14 @@
package cn.hutool.json.test.bean;
public class Data {
private Price Price;
public void setPrice(Price Price) {
this.Price = Price;
}
public Price getPrice() {
return Price;
}
}

View File

@@ -0,0 +1,67 @@
package cn.hutool.json.test.bean;
import java.util.Arrays;
public class Exam {
private String id;
private String examNumber;
private String isAnswer;
private Seq[] answerArray;
private String isRight;
private String isSubject;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getExamNumber() {
return examNumber;
}
public void setExamNumber(String examNumber) {
this.examNumber = examNumber;
}
public String getIsAnswer() {
return isAnswer;
}
public void setIsAnswer(String isAnswer) {
this.isAnswer = isAnswer;
}
public Seq[] getAnswerArray() {
return answerArray;
}
public void setAnswerArray(Seq[] answerArray) {
this.answerArray = answerArray;
}
public String getIsRight() {
return isRight;
}
public void setIsRight(String isRight) {
this.isRight = isRight;
}
public String getIsSubject() {
return isSubject;
}
public void setIsSubject(String isSubject) {
this.isSubject = isSubject;
}
@Override
public String toString() {
return "Exam [id=" + id + ", examNumber=" + examNumber + ", isAnswer=" + isAnswer + ", answerArray=" + Arrays.toString(answerArray) + ", isRight=" + isRight + ", isSubject=" + isSubject + "]";
}
}

View File

@@ -0,0 +1,63 @@
package cn.hutool.json.test.bean;
import java.io.Serializable;
import java.util.Objects;
/**
*
* @author 质量过关
*
*/
public class ExamInfoDict implements Serializable {
private static final long serialVersionUID = 3640936499125004525L;
// 主键
private Integer id; // 可当作题号
// 试题类型 客观题 0主观题 1
private Integer examType;
// 试题是否作答
private Integer answerIs;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getExamType() {
return examType;
}
public void setExamType(Integer examType) {
this.examType = examType;
}
public Integer getAnswerIs() {
return answerIs;
}
public void setAnswerIs(Integer answerIs) {
this.answerIs = answerIs;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
ExamInfoDict that = (ExamInfoDict) o;
return Objects.equals(id, that.id) && Objects.equals(examType, that.examType) && Objects.equals(answerIs, that.answerIs);
}
@Override
public int hashCode() {
return Objects.hash(id, examType, answerIs);
}
@Override
public String toString() {
return "ExamInfoDict{" + "id=" + id + ", examType=" + examType + ", answerIs=" + answerIs + '}';
}
}

View File

@@ -0,0 +1,22 @@
package cn.hutool.json.test.bean;
import cn.hutool.json.JSONObject;
public class JSONBean {
private int code;
private JSONObject data;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public JSONObject getData() {
return data;
}
public void setData(JSONObject data) {
this.data = data;
}
}

View File

@@ -0,0 +1,49 @@
package cn.hutool.json.test.bean;
import java.io.Serializable;
public class JsonNode implements Serializable {
private static final long serialVersionUID = -2280206942803550272L;
private Long id;
private Integer parentId;
private String name;
public JsonNode() {
}
public JsonNode(Long id, Integer parentId, String name) {
this.id = id;
this.parentId = parentId;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "JsonNode{" + "id=" + id + ", parentId=" + parentId + ", name='" + name + '\'' + '}';
}
}

View File

@@ -0,0 +1,61 @@
package cn.hutool.json.test.bean;
import java.util.List;
public class JsonRootBean {
private int statusCode;
private String message;
private int skip;
private int limit;
private int total;
private List<Data> data;
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public int getStatusCode() {
return statusCode;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setSkip(int skip) {
this.skip = skip;
}
public int getSkip() {
return skip;
}
public void setLimit(int limit) {
this.limit = limit;
}
public int getLimit() {
return limit;
}
public void setTotal(int total) {
this.total = total;
}
public int getTotal() {
return total;
}
public void setData(List<Data> data) {
this.data = data;
}
public List<Data> getData() {
return data;
}
}

View File

@@ -0,0 +1,24 @@
package cn.hutool.json.test.bean;
public class KeyBean{
private String akey;
private String bkey;
public String getAkey() {
return akey;
}
public void setAkey(String akey) {
this.akey = akey;
}
public String getBkey() {
return bkey;
}
public void setBkey(String bkey) {
this.bkey = bkey;
}
@Override
public String toString() {
return "KeyBean [akey=" + akey + ", bkey=" + bkey + "]";
}
}

View File

@@ -0,0 +1,965 @@
package cn.hutool.json.test.bean;
import java.util.HashMap;
import java.util.Map;
/**
* @author wangyan E-mail:wangyan@pospt.cn
* @version 创建时间2017年9月13日 下午5:16:32
* 类说明
*/
public class PerfectEvaluationProductResVo extends ProductResBase{
public static final Map<String,String> KEY_TO_KEY = new HashMap<String,String>(){
private static final long serialVersionUID = 1L;
{
put("HA001","CDCA005");
put("HA002","CDCA002");
put("HA003","CDCA004");
put("HA004","CSSP002");
put("HB001","CSWC001");
put("HB002","CSRL001");
put("HB003","CSRL003");
put("HC005","CDTB016");
put("HC006","CDTB020");
put("HC007","CDTB021");
put("HC008","CDTB022");
put("HC009","CDTB023");
put("HC010","CDTB024");
put("HC011","CDTB001");
put("HC012","CDTB005");
put("HC013","CDTB006");
put("HC014","CDTB007");
put("HC015","CDTB008");
put("HC016","CDTB009");
put("HC001","CDTB018");
put("HC002","CDTB003");
put("HC003","CDTB063");
put("HC004","CDTB060");
put("HD001","CDMC005");
put("HD007","CDMC082");
put("HD010","CDMC164");
put("HD016","CSSP003");
put("HD017","CSSS003");
put("HE001","CDTT028");
put("HE002","CDTT029");
put("HE003","CDTT030");
put("HE004","CDTT031");
put("HE005","CDTT032");
put("HE006","CDTT033");
put("HE007","CDTT015");
put("HE008","CDTT016");
put("HE009","CDTT017");
put("HE010","CDTT018");
put("HE011","CDTT019");
put("HE012","CDTT020");
put("HE013","CDTT055");
put("HE014","CDTT056");
put("HE015","CDTT057");
put("HE016","CDTT058");
put("HE017","CDTT059");
put("HE018","CDTT060");
put("HE019","CDTT043");
put("HE020","CDTT044");
put("HE021","CDTT045");
put("HE022","CDTT046");
put("HE023","CDTT047");
put("HE024","CDTT048");
put("HE025","CDTT080");
put("HE026","CDTT081");
put("HE027","CDTT082");
put("HE028","CDTT083");
put("HE029","CDTT084");
put("HE030","CDTT085");
put("HE031","CDTT067");
put("HE032","CDTT068");
put("HE033","CDTT069");
put("HE034","CDTT070");
put("HE035","CDTT071");
put("HE036","CDTT072");
put("HF001","CDTB272");
put("HF002","CDTB273");
put("HF003","CDTB277");
put("HF004","CDTB278");
put("HF005","CDTB282");
put("HF006","CDTB283");
put("HF007","CDTC058");
put("HF008","CDTC059");
put("HF009","CDTC060");
put("HF010","CDTC014");
put("HG001","CDMC294");
put("HG002","CDMC293");
put("HG003","CDMC301");
put("HG004","CDMC300");
put("HG005","CDMC308");
put("HG006","CDMC307");
put("HG007","CDMC315");
put("HG008","CDMC314");
put("HG009","CDMC322");
put("HG010","CDMC321");
put("HG011","CDMC287");
put("HH001","CDTT001");
put("HH002","CDTT002");
put("HH003","CDTT003");
put("HH004","CDTT004");
put("HH005","CDTT005");
put("HH006","CDTT006");
put("HH007","CDTT007");
put("HH008","CDTT008");
put("HH009","CDTT009");
put("HH010","CDTT010");
put("HH011","CDTT011");
put("HH012","CDTT012");
put("HH013","CDTT013");
put("HH014","CDTT014");
}
};
private static final long serialVersionUID = 1L;
private String XT_NO;
private String CARD_HOLDER;
private String CARD_NO;
private String HA001;
private String HA002;
private String HA003;
private String HA004;
private String HB001;
private String HB002;
private String HB003;
private String HC005;
private String HC006;
private String HC007;
private String HC008;
private String HC009;
private String HC010;
private String HC011;
private String HC012;
private String HC013;
private String HC014;
private String HC015;
private String HC016;
private String HC001;
private String HC002;
private String HC003;
private String HC004;
private String HD001;
private String HD002;
private String HD004;
private String HD005;
private String HD007;
private String HD008;
private String HD010;
private String HD011;
private String HD013;
private String HD014;
private String HD016;
private String HD017;
private String HE001;
private String HE002;
private String HE003;
private String HE004;
private String HE005;
private String HE006;
private String HE007;
private String HE008;
private String HE009;
private String HE010;
private String HE011;
private String HE012;
private String HE013;
private String HE014;
private String HE015;
private String HE016;
private String HE017;
private String HE018;
private String HE019;
private String HE020;
private String HE021;
private String HE022;
private String HE023;
private String HE024;
private String HE025;
private String HE026;
private String HE027;
private String HE028;
private String HE029;
private String HE030;
private String HE031;
private String HE032;
private String HE033;
private String HE034;
private String HE035;
private String HE036;
private String HF001;
private String HF002;
private String HF003;
private String HF004;
private String HF005;
private String HF006;
private String HF007;
private String HF008;
private String HF009;
private String HF010;
private String HG001;
private String HG002;
private String HG003;
private String HG004;
private String HG005;
private String HG006;
private String HG007;
private String HG008;
private String HG009;
private String HG010;
private String HG011;
private String HG012;
private String HG013;
private String HG014;
private String HG015;
private String HG016;
private String HH001;
private String HH002;
private String HH003;
private String HH004;
private String HH005;
private String HH006;
private String HH007;
private String HH008;
private String HH009;
private String HH010;
private String HH011;
private String HH012;
private String HH013;
private String HH014;
private String XT_MONTH01;
private String XT_MONTH02;
private String XT_MONTH03;
private String XT_MONTH04;
private String XT_MONTH05;
private String XT_MONTH06;
public String getHA001() {
return HA001;
}
public String getHA002() {
return HA002;
}
public String getHA003() {
return HA003;
}
public String getHA004() {
return HA004;
}
public String getHB001() {
return HB001;
}
public String getHB002() {
return HB002;
}
public String getHB003() {
return HB003;
}
public String getHC005() {
return HC005;
}
public String getHC006() {
return HC006;
}
public String getHC007() {
return HC007;
}
public String getHC008() {
return HC008;
}
public String getHC009() {
return HC009;
}
public String getHC010() {
return HC010;
}
public String getHC011() {
return HC011;
}
public String getHC012() {
return HC012;
}
public String getHC013() {
return HC013;
}
public String getHC014() {
return HC014;
}
public String getHC015() {
return HC015;
}
public String getHC016() {
return HC016;
}
public String getHC001() {
return HC001;
}
public String getHC002() {
return HC002;
}
public String getHC003() {
return HC003;
}
public String getHC004() {
return HC004;
}
public String getHD001() {
return HD001;
}
public String getHD002() {
return HD002;
}
public String getHD004() {
return HD004;
}
public String getHD005() {
return HD005;
}
public String getHD007() {
return HD007;
}
public String getHD008() {
return HD008;
}
public String getHD010() {
return HD010;
}
public String getHD011() {
return HD011;
}
public String getHD013() {
return HD013;
}
public String getHD014() {
return HD014;
}
public String getHD016() {
return HD016;
}
public String getHD017() {
return HD017;
}
public String getHE001() {
return HE001;
}
public String getHE002() {
return HE002;
}
public String getHE003() {
return HE003;
}
public String getHE004() {
return HE004;
}
public String getHE005() {
return HE005;
}
public String getHE006() {
return HE006;
}
public String getHE007() {
return HE007;
}
public String getHE008() {
return HE008;
}
public String getHE009() {
return HE009;
}
public String getHE010() {
return HE010;
}
public String getHE011() {
return HE011;
}
public String getHE012() {
return HE012;
}
public String getHE013() {
return HE013;
}
public String getHE014() {
return HE014;
}
public String getHE015() {
return HE015;
}
public String getHE016() {
return HE016;
}
public String getHE017() {
return HE017;
}
public String getHE018() {
return HE018;
}
public String getHE019() {
return HE019;
}
public String getHE020() {
return HE020;
}
public String getHE021() {
return HE021;
}
public String getHE022() {
return HE022;
}
public String getHE023() {
return HE023;
}
public String getHE024() {
return HE024;
}
public String getHE025() {
return HE025;
}
public String getHE026() {
return HE026;
}
public String getHE027() {
return HE027;
}
public String getHE028() {
return HE028;
}
public String getHE029() {
return HE029;
}
public String getHE030() {
return HE030;
}
public String getHE031() {
return HE031;
}
public String getHE032() {
return HE032;
}
public String getHE033() {
return HE033;
}
public String getHE034() {
return HE034;
}
public String getHE035() {
return HE035;
}
public String getHE036() {
return HE036;
}
public String getHF001() {
return HF001;
}
public String getHF002() {
return HF002;
}
public String getHF003() {
return HF003;
}
public String getHF004() {
return HF004;
}
public String getHF005() {
return HF005;
}
public String getHF006() {
return HF006;
}
public String getHF007() {
return HF007;
}
public String getHF008() {
return HF008;
}
public String getHF009() {
return HF009;
}
public String getHF010() {
return HF010;
}
public String getHG001() {
return HG001;
}
public String getHG002() {
return HG002;
}
public String getHG003() {
return HG003;
}
public String getHG004() {
return HG004;
}
public String getHG005() {
return HG005;
}
public String getHG006() {
return HG006;
}
public String getHG007() {
return HG007;
}
public String getHG008() {
return HG008;
}
public String getHG009() {
return HG009;
}
public String getHG010() {
return HG010;
}
public String getHG011() {
return HG011;
}
public String getHG012() {
return HG012;
}
public String getHG013() {
return HG013;
}
public String getHG014() {
return HG014;
}
public String getHG015() {
return HG015;
}
public String getHG016() {
return HG016;
}
public String getHH001() {
return HH001;
}
public String getHH002() {
return HH002;
}
public String getHH003() {
return HH003;
}
public String getHH004() {
return HH004;
}
public String getHH005() {
return HH005;
}
public String getHH006() {
return HH006;
}
public String getHH007() {
return HH007;
}
public String getHH008() {
return HH008;
}
public String getHH009() {
return HH009;
}
public String getHH010() {
return HH010;
}
public String getHH011() {
return HH011;
}
public String getHH012() {
return HH012;
}
public String getHH013() {
return HH013;
}
public String getHH014() {
return HH014;
}
public void setHA001(String hA001) {
HA001 = hA001;
}
public void setHA002(String hA002) {
HA002 = hA002;
}
public void setHA003(String hA003) {
HA003 = hA003;
}
public void setHA004(String hA004) {
HA004 = hA004;
}
public void setHB001(String hB001) {
HB001 = hB001;
}
public void setHB002(String hB002) {
HB002 = hB002;
}
public void setHB003(String hB003) {
HB003 = hB003;
}
public void setHC005(String hC005) {
HC005 = hC005;
}
public void setHC006(String hC006) {
HC006 = hC006;
}
public void setHC007(String hC007) {
HC007 = hC007;
}
public void setHC008(String hC008) {
HC008 = hC008;
}
public void setHC009(String hC009) {
HC009 = hC009;
}
public void setHC010(String hC010) {
HC010 = hC010;
}
public void setHC011(String hC011) {
HC011 = hC011;
}
public void setHC012(String hC012) {
HC012 = hC012;
}
public void setHC013(String hC013) {
HC013 = hC013;
}
public void setHC014(String hC014) {
HC014 = hC014;
}
public void setHC015(String hC015) {
HC015 = hC015;
}
public void setHC016(String hC016) {
HC016 = hC016;
}
public void setHC001(String hC001) {
HC001 = hC001;
}
public void setHC002(String hC002) {
HC002 = hC002;
}
public void setHC003(String hC003) {
HC003 = hC003;
}
public void setHC004(String hC004) {
HC004 = hC004;
}
public void setHD001(String hD001) {
HD001 = hD001;
}
public void setHD002(String hD002) {
HD002 = hD002;
}
public void setHD004(String hD004) {
HD004 = hD004;
}
public void setHD005(String hD005) {
HD005 = hD005;
}
public void setHD007(String hD007) {
HD007 = hD007;
}
public void setHD008(String hD008) {
HD008 = hD008;
}
public void setHD010(String hD010) {
HD010 = hD010;
}
public void setHD011(String hD011) {
HD011 = hD011;
}
public void setHD013(String hD013) {
HD013 = hD013;
}
public void setHD014(String hD014) {
HD014 = hD014;
}
public void setHD016(String hD016) {
HD016 = hD016;
}
public void setHD017(String hD017) {
HD017 = hD017;
}
public void setHE001(String hE001) {
HE001 = hE001;
}
public void setHE002(String hE002) {
HE002 = hE002;
}
public void setHE003(String hE003) {
HE003 = hE003;
}
public void setHE004(String hE004) {
HE004 = hE004;
}
public void setHE005(String hE005) {
HE005 = hE005;
}
public void setHE006(String hE006) {
HE006 = hE006;
}
public void setHE007(String hE007) {
HE007 = hE007;
}
public void setHE008(String hE008) {
HE008 = hE008;
}
public void setHE009(String hE009) {
HE009 = hE009;
}
public void setHE010(String hE010) {
HE010 = hE010;
}
public void setHE011(String hE011) {
HE011 = hE011;
}
public void setHE012(String hE012) {
HE012 = hE012;
}
public void setHE013(String hE013) {
HE013 = hE013;
}
public void setHE014(String hE014) {
HE014 = hE014;
}
public void setHE015(String hE015) {
HE015 = hE015;
}
public void setHE016(String hE016) {
HE016 = hE016;
}
public void setHE017(String hE017) {
HE017 = hE017;
}
public void setHE018(String hE018) {
HE018 = hE018;
}
public void setHE019(String hE019) {
HE019 = hE019;
}
public void setHE020(String hE020) {
HE020 = hE020;
}
public void setHE021(String hE021) {
HE021 = hE021;
}
public void setHE022(String hE022) {
HE022 = hE022;
}
public void setHE023(String hE023) {
HE023 = hE023;
}
public void setHE024(String hE024) {
HE024 = hE024;
}
public void setHE025(String hE025) {
HE025 = hE025;
}
public void setHE026(String hE026) {
HE026 = hE026;
}
public void setHE027(String hE027) {
HE027 = hE027;
}
public void setHE028(String hE028) {
HE028 = hE028;
}
public void setHE029(String hE029) {
HE029 = hE029;
}
public void setHE030(String hE030) {
HE030 = hE030;
}
public void setHE031(String hE031) {
HE031 = hE031;
}
public void setHE032(String hE032) {
HE032 = hE032;
}
public void setHE033(String hE033) {
HE033 = hE033;
}
public void setHE034(String hE034) {
HE034 = hE034;
}
public void setHE035(String hE035) {
HE035 = hE035;
}
public void setHE036(String hE036) {
HE036 = hE036;
}
public void setHF001(String hF001) {
HF001 = hF001;
}
public void setHF002(String hF002) {
HF002 = hF002;
}
public void setHF003(String hF003) {
HF003 = hF003;
}
public void setHF004(String hF004) {
HF004 = hF004;
}
public void setHF005(String hF005) {
HF005 = hF005;
}
public void setHF006(String hF006) {
HF006 = hF006;
}
public void setHF007(String hF007) {
HF007 = hF007;
}
public void setHF008(String hF008) {
HF008 = hF008;
}
public void setHF009(String hF009) {
HF009 = hF009;
}
public void setHF010(String hF010) {
HF010 = hF010;
}
public void setHG001(String hG001) {
HG001 = hG001;
}
public void setHG002(String hG002) {
HG002 = hG002;
}
public void setHG003(String hG003) {
HG003 = hG003;
}
public void setHG004(String hG004) {
HG004 = hG004;
}
public void setHG005(String hG005) {
HG005 = hG005;
}
public void setHG006(String hG006) {
HG006 = hG006;
}
public void setHG007(String hG007) {
HG007 = hG007;
}
public void setHG008(String hG008) {
HG008 = hG008;
}
public void setHG009(String hG009) {
HG009 = hG009;
}
public void setHG010(String hG010) {
HG010 = hG010;
}
public void setHG011(String hG011) {
HG011 = hG011;
}
public void setHG012(String hG012) {
HG012 = hG012;
}
public void setHG013(String hG013) {
HG013 = hG013;
}
public void setHG014(String hG014) {
HG014 = hG014;
}
public void setHG015(String hG015) {
HG015 = hG015;
}
public void setHG016(String hG016) {
HG016 = hG016;
}
public void setHH001(String hH001) {
HH001 = hH001;
}
public void setHH002(String hH002) {
HH002 = hH002;
}
public void setHH003(String hH003) {
HH003 = hH003;
}
public void setHH004(String hH004) {
HH004 = hH004;
}
public void setHH005(String hH005) {
HH005 = hH005;
}
public void setHH006(String hH006) {
HH006 = hH006;
}
public void setHH007(String hH007) {
HH007 = hH007;
}
public void setHH008(String hH008) {
HH008 = hH008;
}
public void setHH009(String hH009) {
HH009 = hH009;
}
public void setHH010(String hH010) {
HH010 = hH010;
}
public void setHH011(String hH011) {
HH011 = hH011;
}
public void setHH012(String hH012) {
HH012 = hH012;
}
public void setHH013(String hH013) {
HH013 = hH013;
}
public void setHH014(String hH014) {
HH014 = hH014;
}
public String getXT_NO() {
return XT_NO;
}
public void setXT_NO(String xT_NO) {
XT_NO = xT_NO;
}
public String getCARD_HOLDER() {
return CARD_HOLDER;
}
public void setCARD_HOLDER(String cARD_HOLDER) {
CARD_HOLDER = cARD_HOLDER;
}
public String getCARD_NO() {
return CARD_NO;
}
public String getXT_MONTH01() {
return XT_MONTH01;
}
public String getXT_MONTH02() {
return XT_MONTH02;
}
public String getXT_MONTH03() {
return XT_MONTH03;
}
public String getXT_MONTH04() {
return XT_MONTH04;
}
public String getXT_MONTH05() {
return XT_MONTH05;
}
public String getXT_MONTH06() {
return XT_MONTH06;
}
public void setCARD_NO(String cARD_NO) {
CARD_NO = cARD_NO;
}
public void setXT_MONTH01(String xT_MONTH01) {
XT_MONTH01 = xT_MONTH01;
}
public void setXT_MONTH02(String xT_MONTH02) {
XT_MONTH02 = xT_MONTH02;
}
public void setXT_MONTH03(String xT_MONTH03) {
XT_MONTH03 = xT_MONTH03;
}
public void setXT_MONTH04(String xT_MONTH04) {
XT_MONTH04 = xT_MONTH04;
}
public void setXT_MONTH05(String xT_MONTH05) {
XT_MONTH05 = xT_MONTH05;
}
public void setXT_MONTH06(String xT_MONTH06) {
XT_MONTH06 = xT_MONTH06;
}
}

View File

@@ -0,0 +1,16 @@
package cn.hutool.json.test.bean;
import java.util.List;
public class Price {
private List<List<ADT>> ADT;
public void setADT(List<List<ADT>> ADT) {
this.ADT = ADT;
}
public List<List<ADT>> getADT() {
return ADT;
}
}

View File

@@ -0,0 +1,71 @@
package cn.hutool.json.test.bean;
import java.io.Serializable;
/**
* @author wangyan E-mail:wangyan@pospt.cn
* @version 创建时间2017年9月11日 上午9:33:01 类说明
*/
public class ProductResBase implements Serializable {
private static final long serialVersionUID = -6708040074002451511L;
/**
* 请求结果成功0
*/
public static final int REQUEST_RESULT_SUCCESS = 0;
/**
* 请求结果失败 1
*/
public static final int REQUEST_RESULT_FIAL = 1;
/**
* 成功code
*/
public static final String REQUEST_CODE_SUCCESS = "0000";
/**
* 结果 成功0 失败1
*/
private int resResult = 0;
private String resCode = "0000";
private String resMsg = "success";
/**
* 成本总计
*/
private Integer costTotal;
public Integer getCostTotal() {
return costTotal;
}
public ProductResBase setCostTotal(Integer costTotal) {
this.costTotal = costTotal;
return this;
}
public int getResResult() {
return resResult;
}
public String getResCode() {
return resCode;
}
public String getResMsg() {
return resMsg;
}
public ProductResBase setResResult(int resResult) {
this.resResult = resResult;
return this;
}
public ProductResBase setResCode(String resCode) {
this.resCode = resCode;
return this;
}
public ProductResBase setResMsg(String resMsg) {
this.resMsg = resMsg;
return this;
}
}

View File

@@ -0,0 +1,156 @@
package cn.hutool.json.test.bean;
import java.io.Serializable;
public class ResultDto<T> implements Serializable {
private static final long serialVersionUID = -1417999729205654379L;
/**
* 成功码.
*/
public static final int SUCCESS_CODE = 200;
/**
* 成功信息.
*/
public static final String SUCCESS_MESSAGE = "操作成功";
/**
* 错误码.
*/
public static final int ERROR_CODE = 500;
/**
* 错误信息.
*/
public static final String ERROR_MESSAGE = "内部异常";
/**
* 错误码:参数非法
*/
public static final int ILLEGAL_ARGUMENT_CODE_ = 100;
/**
* 错误信息:参数非法
*/
public static final String ILLEGAL_ARGUMENT_MESSAGE = "参数非法";
/**
* 编号.
*/
private int code;
/**
* 信息.
*/
private String message;
/**
* 结果数据
*/
private T result;
/**
* Instantiates a new wrapper. default code=200
*/
public ResultDto() {
this(SUCCESS_CODE, SUCCESS_MESSAGE);
}
/**
* Instantiates a new wrapper.
*
* @param code the code
* @param message the message
*/
public ResultDto(int code, String message) {
this(code, message, null);
}
/**
* Instantiates a new wrapper.
*
* @param code the code
* @param message the message
* @param result the result
*/
ResultDto(int code, String message, T result) {
super();
this.code(code).message(message).result(result);
}
/**
* Sets the 编号 , 返回自身的引用.
*
* @param code the new 编号
* @return the wrapper
*/
private ResultDto<T> code(int code) {
this.setCode(code);
return this;
}
/**
* Sets the 信息 , 返回自身的引用.
*
* @param message the new 信息
* @return the wrapper
*/
private ResultDto<T> message(String message) {
this.setMessage(message);
return this;
}
/**
* Sets the 结果数据 , 返回自身的引用.
*
* @param result the new 结果数据
* @return the wrapper
*/
public ResultDto<T> result(T result) {
this.setResult(result);
return this;
}
/**
* 判断是否成功: 依据 ResultDto.SUCCESS_CODE == this.code
*
* @return code =200,true;否则 false.
*/
public boolean success() {
return ResultDto.SUCCESS_CODE == this.code;
}
/**
* 判断是否成功: 依据 ResultDto.SUCCESS_CODE != this.code
*
* @return code !=200,true;否则 false.
*/
public boolean error() {
return !success();
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getResult() {
return result;
}
public void setResult(T result) {
this.result = result;
}
}

View File

@@ -0,0 +1,25 @@
package cn.hutool.json.test.bean;
public class Seq {
private String seq;
public Seq() {
}
public Seq(String seq) {
this.seq = seq;
}
public String getSeq() {
return seq;
}
public void setSeq(String seq) {
this.seq = seq;
}
@Override
public String toString() {
return "Seq [seq=" + seq + "]";
}
}

View File

@@ -0,0 +1,22 @@
package cn.hutool.json.test.bean;
public class TokenAuthResponse {
private String token;
private String userId;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}

View File

@@ -0,0 +1,24 @@
package cn.hutool.json.test.bean;
public class TokenAuthWarp extends UUMap<TokenAuthResponse> {
private static final long serialVersionUID = 1L;
private String targetUrl;
private String success;
public String getTargetUrl() {
return targetUrl;
}
public void setTargetUrl(String targetUrl) {
this.targetUrl = targetUrl;
}
public String getSuccess() {
return success;
}
public void setSuccess(String success) {
this.success = success;
}
}

View File

@@ -0,0 +1,9 @@
package cn.hutool.json.test.bean;
public class TokenAuthWarp2 extends TokenAuthWarp {
/**
*
*/
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,21 @@
package cn.hutool.json.test.bean;
import java.io.Serializable;
public class UUMap<T> implements Serializable{
private static final long serialVersionUID = 1L;
private T result;
public T getResult() {
return result;
}
public void setResult(T result) {
this.result = result;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}

View File

@@ -0,0 +1,40 @@
package cn.hutool.json.test.bean;
import java.util.Date;
import java.util.List;
public class UserA {
private String name;
private String a;
private Date date;
private List<Seq> sqs;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public List<Seq> getSqs() {
return sqs;
}
public void setSqs(List<Seq> sqs) {
this.sqs = sqs;
}
@Override
public String toString() {
return "UserA [name=" + name + ", a=" + a + ", date=" + date + ", sqs=" + sqs + "]";
}
}

View File

@@ -0,0 +1,28 @@
package cn.hutool.json.test.bean;
import java.util.Date;
public class UserB {
private String name;
private String b;
private Date date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getB() {
return b;
}
public void setB(String a) {
this.b = a;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}

View File

@@ -0,0 +1,31 @@
package cn.hutool.json.test.bean;
public class UserC {
private Integer id;
private String name;
private String prop;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getProp() {
return prop;
}
public void setProp(String prop) {
this.prop = prop;
}
}

View File

@@ -0,0 +1,79 @@
package cn.hutool.json.test.bean;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
/**
* 用户信息
* @author 质量过关
*
*/
public class UserInfoDict implements Serializable {
private static final long serialVersionUID = -936213991463284306L;
// 用户Id
private Integer id;
// 要展示的名字
private String realName;
// 头像地址
private String photoPath;
private List<ExamInfoDict> examInfoDict;
private UserInfoRedundCount userInfoRedundCount;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getPhotoPath() {
return photoPath;
}
public void setPhotoPath(String photoPath) {
this.photoPath = photoPath;
}
public List<ExamInfoDict> getExamInfoDict() {
return examInfoDict;
}
public void setExamInfoDict(List<ExamInfoDict> examInfoDict) {
this.examInfoDict = examInfoDict;
}
public UserInfoRedundCount getUserInfoRedundCount() {
return userInfoRedundCount;
}
public void setUserInfoRedundCount(UserInfoRedundCount userInfoRedundCount) {
this.userInfoRedundCount = userInfoRedundCount;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
UserInfoDict that = (UserInfoDict) o;
return Objects.equals(id, that.id) && Objects.equals(realName, that.realName) && Objects.equals(photoPath, that.photoPath) && Objects.equals(examInfoDict, that.examInfoDict);
}
@Override
public int hashCode() {
return Objects.hash(id, realName, photoPath, examInfoDict);
}
@Override
public String toString() {
return "UserInfoDict [id=" + id + ", realName=" + realName + ", photoPath=" + photoPath + ", examInfoDict=" + examInfoDict + ", userInfoRedundCount=" + userInfoRedundCount + "]";
}
}

View File

@@ -0,0 +1,38 @@
package cn.hutool.json.test.bean;
import java.io.Serializable;
public class UserInfoRedundCount implements Serializable {
private static final long serialVersionUID = -8397291070139255181L;
private String finishedRatio; // 完成率
private Integer ownershipExamCount; // 自己有多少道题
private Integer answeredExamCount; // 当前回答了多少道题
public Integer getOwnershipExamCount() {
return ownershipExamCount;
}
public void setOwnershipExamCount(Integer ownershipExamCount) {
this.ownershipExamCount = ownershipExamCount;
}
public Integer getAnsweredExamCount() {
return answeredExamCount;
}
public void setAnsweredExamCount(Integer answeredExamCount) {
this.answeredExamCount = answeredExamCount;
}
public String getFinishedRatio() {
return finishedRatio;
}
public void setFinishedRatio(String finishedRatio) {
this.finishedRatio = finishedRatio;
}
}

View File

@@ -0,0 +1,15 @@
package cn.hutool.json.test.bean;
import java.util.Map;
public class UserWithMap {
private Map<String, String> data;
public Map<String, String> getData() {
return data;
}
public void setData(Map<String, String> data) {
this.data = data;
}
}

View File

@@ -0,0 +1,31 @@
package cn.hutool.json.test.bean.report;
import java.util.ArrayList;
import java.util.List;
/**
* 测试用例报告
* @author xuwangcheng
* @version 20181012
*
*/
public class CaseReport {
/**
* 包含的测试步骤报告
*/
private List<StepReport> stepReports = new ArrayList<StepReport>();
public List<StepReport> getStepReports() {
return stepReports;
}
public void setStepReports(List<StepReport> stepReports) {
this.stepReports = stepReports;
}
@Override
public String toString() {
return "CaseReport [stepReports=" + stepReports + "]";
}
}

View File

@@ -0,0 +1,243 @@
package cn.hutool.json.test.bean.report;
import java.util.Collection;
/**
* 测试环境信息
* @author xuwangcheng
* @version 20181012
*
*/
public class EnvSettingInfo {
public static boolean DEV_MODE = true;
private boolean remoteMode;
private String hubRemoteUrl;
private String reportFolder = "/report";
private String screenshotFolder = "/screenshot";;
private String elementFolder = "/config/element/";
private String suiteFolder = "/config/suite/";
private String chromeDriverPath = "/src/main/resources/chromedriver.exe";
private String ieDriverPath = "/src/main/resources/IEDriverServer.exe";
private String operaDriverPath = "/src/main/resources/operadriver.exe";
private String firefoxDriverPath = "/src/main/resources/geckodriver.exe";
private Double defaultSleepSeconds;
private Integer elementLocationRetryCount;
private Double elementLocationTimeouts;
/**
* 收件人列表
*/
private Collection<String> tos;
/**
* 抄送人列表
*/
private Collection<String> ccs;
/**
* 密送人列表
*/
private Collection<String> bccs;
/**
* 是否可以开启定时任务
*/
private boolean cronEnabled = false;
/**
* 定时执行suite文件
*/
private String cronSuite;
/**
* 定时执行cron表达式支持linux crontab格式(5位)和Quartz的cron格式(6位)
*/
private String cronExpression;
/**
* 存储测试报告数据的轻量级数据库,路径
*/
private String sqlitePath;
public EnvSettingInfo() {
super();
}
public void setSqlitePath(String sqlitePath) {
this.sqlitePath = sqlitePath;
}
public String getSqlitePath() {
return sqlitePath;
}
public void setCronEnabled(boolean cronEnabled) {
this.cronEnabled = cronEnabled;
}
public boolean isCronEnabled() {
return cronEnabled;
}
public String getCronSuite() {
return cronSuite;
}
public void setCronSuite(String cronSuite) {
this.cronSuite = cronSuite;
}
public String getCronExpression() {
return cronExpression;
}
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
public Integer getElementLocationRetryCount() {
return elementLocationRetryCount;
}
public void setElementLocationRetryCount(Integer elementLocationRetryCount) {
this.elementLocationRetryCount = elementLocationRetryCount;
}
public Double getElementLocationTimeouts() {
return elementLocationTimeouts;
}
public void setElementLocationTimeouts(Double elementLocationTimeouts) {
this.elementLocationTimeouts = elementLocationTimeouts;
}
public String getElementFolder() {
return elementFolder;
}
public void setElementFolder(String elementFolder) {
this.elementFolder = elementFolder;
}
public String getSuiteFolder() {
return suiteFolder;
}
public void setSuiteFolder(String suiteFolder) {
this.suiteFolder = suiteFolder;
}
public boolean isRemoteMode() {
return remoteMode;
}
public void setRemoteMode(boolean remoteMode) {
this.remoteMode = remoteMode;
}
public String getHubRemoteUrl() {
return hubRemoteUrl;
}
public void setHubRemoteUrl(String hubRemoteUrl) {
this.hubRemoteUrl = hubRemoteUrl;
}
public String getReportFolder() {
return reportFolder;
}
public void setReportFolder(String reportFolder) {
this.reportFolder = reportFolder;
}
public String getScreenshotFolder() {
return screenshotFolder;
}
public void setScreenshotFolder(String screenshotFolder) {
this.screenshotFolder = screenshotFolder;
}
public String getChromeDriverPath() {
return chromeDriverPath;
}
public void setChromeDriverPath(String chromeDriverPath) {
this.chromeDriverPath = chromeDriverPath;
}
public String getIeDriverPath() {
return ieDriverPath;
}
public void setIeDriverPath(String ieDriverPath) {
this.ieDriverPath = ieDriverPath;
}
public String getOperaDriverPath() {
return operaDriverPath;
}
public void setOperaDriverPath(String operaDriverPath) {
this.operaDriverPath = operaDriverPath;
}
public String getFirefoxDriverPath() {
return firefoxDriverPath;
}
public void setFirefoxDriverPath(String firefoxDriverPath) {
this.firefoxDriverPath = firefoxDriverPath;
}
public Double getDefaultSleepSeconds() {
return defaultSleepSeconds;
}
public void setDefaultSleepSeconds(Double defaultSleepSeconds) {
this.defaultSleepSeconds = defaultSleepSeconds;
}
public Collection<String> getTos() {
return tos;
}
public void setTos(Collection<String> tos) {
this.tos = tos;
}
public Collection<String> getCcs() {
return ccs;
}
public void setCcs(Collection<String> ccs) {
this.ccs = ccs;
}
public Collection<String> getBccs() {
return bccs;
}
public void setBccs(Collection<String> bccs) {
this.bccs = bccs;
}
@Override
public String toString() {
return "EnvSettingInfo [remoteMode=" + remoteMode + ", hubRemoteUrl=" + hubRemoteUrl + ", reportFolder="
+ reportFolder + ", screenshotFolder=" + screenshotFolder + ", elementFolder=" + elementFolder
+ ", suiteFolder=" + suiteFolder + ", chromeDriverPath=" + chromeDriverPath + ", ieDriverPath="
+ ieDriverPath + ", operaDriverPath=" + operaDriverPath + ", firefoxDriverPath=" + firefoxDriverPath
+ ", defaultSleepSeconds=" + defaultSleepSeconds + ", elementLocationRetryCount="
+ elementLocationRetryCount + ", elementLocationTimeouts=" + elementLocationTimeouts + ", mailAccount="
+ 1 + ", tos=" + tos + ", ccs=" + ccs + ", bccs=" + bccs + ", cronEnabled=" + cronEnabled
+ ", cronSuite=" + cronSuite + ", cronExpression=" + cronExpression + "]";
}
}

View File

@@ -0,0 +1,160 @@
package cn.hutool.json.test.bean.report;
import cn.hutool.core.util.StrUtil;
/**
* 测试步骤报告
* @author xuwangcheng
* @version 20181012
*
*/
public class StepReport {
private static int step_id = 0;
private int stepId = getId();
/**
* 步骤名称
*/
private String stepName;
/**
* 元素名称
*/
private String elementName;
/**
* 元素定位器
*/
private String location;
/**
* 参数
*/
private String params;
/**
* 结果
*/
private String result;
/**
* 操作名称,中文
*/
private String actionName;
/**
* 测试时间
*/
private String testTime;
/**
* 测试状态true-成功 false-失败
*/
private boolean status = true;
/**
* 备注信息
*/
private String mark;
/**
* 截图路径:相对路径
*/
private String screenshot;
private static synchronized int getId() {
return step_id++;
}
public int getStepId() {
return stepId;
}
public void setStepId(int stepId) {
this.stepId = stepId;
}
public void setResult(String result) {
this.result = result;
}
public String getResult() {
return result;
}
public String getStepName() {
return stepName;
}
public void setStepName(String stepName) {
this.stepName = stepName;
}
public void setStepName() {
this.stepName = this.actionName + (StrUtil.isBlank(this.elementName) ? "" : " => " + this.elementName);
}
public String getElementName() {
return elementName;
}
public void setElementName(String elementName) {
this.elementName = elementName;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getParams() {
return params;
}
public void setParams(String params) {
this.params = params;
}
public String getActionName() {
return actionName;
}
public void setActionName(String actionName) {
this.actionName = actionName;
}
public String getTestTime() {
return testTime;
}
public void setTestTime(String testTime) {
this.testTime = testTime;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public String getMark() {
return mark;
}
public void setMark(String mark) {
this.mark = mark;
}
public String getScreenshot() {
return screenshot;
}
public void setScreenshot(String screenshot) {
this.screenshot = screenshot;
}
@Override
public String toString() {
return "StepReport [stepId=" + stepId + ", stepName=" + stepName + ", elementName=" + elementName
+ ", location=" + location + ", params=" + params + ", result=" + result + ", actionName=" + actionName
+ ", testTime=" + testTime + ", status=" + status + ", mark=" + mark + ", screenshot=" + screenshot
+ "]";
}
}

View File

@@ -0,0 +1,31 @@
package cn.hutool.json.test.bean.report;
import java.util.ArrayList;
import java.util.List;
/**
* 测试套件报告
* @author xuwangcheng
* @version 20181012
*
*/
public class SuiteReport {
/**
* 包含的用例测试报告
*/
private List<CaseReport> caseReports = new ArrayList<CaseReport>();
public List<CaseReport> getCaseReports() {
return caseReports;
}
public void setCaseReports(List<CaseReport> caseReports) {
this.caseReports = caseReports;
}
@Override
public String toString() {
return "SuiteReport [caseReports=" + caseReports + "]";
}
}

View File

@@ -0,0 +1,126 @@
{
"HF003": "武汉市",
"HF002": "585.37",
"HF005": "",
"HF004": "154",
"costTotal": 12,
"HF001": "北京市",
"HF007": "北京市",
"HF006": "0",
"HF009": "",
"HF008": "武汉市",
"HH010": "0",
"resResult": 0,
"HH011": "394.3",
"HH012": "7",
"HH013": "0",
"HH014": "0",
"XT_NO": "2017101714250003",
"resMsg": "success",
"HH008": "0",
"HH009": "0",
"HH006": "0",
"HH007": "0",
"HH004": "0",
"HH005": "0",
"HH002": "1",
"HH003": "0",
"HH001": "38.93",
"resCode": "0000",
"HD002": "77",
"HD001": "1",
"HG008": "0",
"HE004": "0",
"HG007": "0",
"HE003": "0",
"HE002": "2",
"HG009": "0",
"HE001": "1",
"HG004": "4",
"HE008": "139.55",
"HG003": "164.18",
"HE007": "50",
"HG006": "1",
"HD008": "0",
"HE006": "0",
"HG005": "77",
"HE005": "0",
"HD007": "0",
"HD004": "0.0",
"HG002": "7",
"HE009": "0",
"HD005": "0.0",
"HG001": "259.4",
"HE011": "0",
"HE010": "0",
"HE013": "1",
"HE012": "0",
"HE015": "0",
"HE014": "0",
"HE017": "3",
"HG016": "商户",
"HE016": "0",
"HG015": "商户",
"HE019": "20",
"HG014": "餐馆",
"HE018": "2",
"HG013": "计算机商店",
"HG012": "仓储大超市",
"HG011": "3",
"HG010": "0",
"HB001": "1",
"HB003": "631",
"HB002": "492",
"HE026": "1",
"HE025": "1",
"HE024": "59.76",
"HE023": "93.83",
"HE022": "0",
"HE021": "0",
"XT_MONTH02": "2017/04",
"HE020": "0",
"XT_MONTH01": "2017/03",
"HE029": "0",
"CARD_HOLDER": "王雁",
"HE028": "0",
"HE027": "0",
"CARD_NO": "6225768752646560",
"HC016": "103.02",
"HC015": "93.83",
"HC014": "0",
"HC013": "0",
"HC012": "213.73",
"HC011": "90",
"HC010": "3",
"HE035": "0",
"HE034": "0",
"HE036": "43.26",
"HD010": "0",
"HE031": "20",
"HD011": "0",
"HE030": "1",
"HE033": "0",
"HD013": "11.00",
"HE032": "74.18",
"HD014": "423.58",
"HA002": "金卡",
"HA001": "招商银行",
"HD016": "8",
"HA004": "4",
"HD017": "7",
"HF010": "8",
"HA003": "招商银行信用卡",
"HC008": "0",
"HC007": "0",
"HC009": "3",
"HC004": "83.43",
"HC003": "2.0",
"HC006": "3",
"HC005": "3",
"XT_MONTH05": "2017/07",
"XT_MONTH06": "2017/08",
"HC002": "500.58",
"XT_MONTH03": "2017/05",
"HC001": "12",
"XT_MONTH04": "2017/06"
}

View File

@@ -0,0 +1,281 @@
[
{
"id": 1753,
"examNumber": 1,
"isAnswer": true,
"answerArray": [
{
"seq": 0
}
],
"isRight": 1,
"isSubject": 0
},
{
"id": 1754,
"examNumber": 2,
"isAnswer": true,
"answerArray": [
{
"seq": 1
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 1756,
"examNumber": 3,
"isAnswer": true,
"answerArray": [
{
"seq": 1
},
{
"seq": 2
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 1757,
"examNumber": 4,
"isAnswer": true,
"answerArray": [
{
"seq": 1
},
{
"seq": 3
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 1759,
"examNumber": 5,
"isAnswer": true,
"answerArray": [
{
"seq": 0
}
],
"isRight": 1,
"isSubject": 0
},
{
"id": 1760,
"examNumber": 6,
"isAnswer": true,
"answerArray": [
{
"seq": 1
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 1762,
"examNumber": 7,
"isAnswer": true,
"answerArray": [
{
"detailContent": "公司的发生地方"
},
{
"detailContent": "告诉对方"
},
{
"detailContent": "二位水电费"
},
{
"detailContent": "公司东方闪电"
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 1763,
"examNumber": 8,
"isAnswer": true,
"answerArray": [
{
"detailContent": "告诉对方s"
},
{
"detailContent": "公司垫付多少"
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 1765,
"examNumber": 9,
"isAnswer": true,
"answerArray": [
{
"detailContent": "http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg,http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg"
}
],
"isSubject": 1
},
{
"id": 1766,
"examNumber": 10,
"isAnswer": true,
"answerArray": [
{
"detailContent": "http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg,http://…_1.jpg,http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg"
}
],
"isSubject": 1
},
{
"id": 0,
"examNumber": 11,
"isAnswer": true,
"answerArray": [
{
"seq": 0
}
],
"isRight": 1,
"isSubject": 0
},
{
"id": 1,
"examNumber": 12,
"isAnswer": true,
"answerArray": [
{
"seq": 1
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 2,
"examNumber": 13,
"isAnswer": true,
"answerArray": [
{
"seq": 0
}
],
"isRight": 1,
"isSubject": 0
},
{
"id": 3,
"examNumber": 14,
"isAnswer": true,
"answerArray": [
{
"seq": 1
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 4,
"examNumber": 15,
"isAnswer": true,
"answerArray": [
{
"detailContent": "公司东方闪电"
},
{
"detailContent": "国顺副食店"
},
{
"detailContent": "无二水电费是的"
},
{
"detailContent": "公司东方闪电"
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 5,
"examNumber": 16,
"isAnswer": true,
"answerArray": [
{
"detailContent": "公司东方闪电"
},
{
"detailContent": "格式的维尔士大夫"
},
{
"detailContent": "公司东风"
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 6,
"examNumber": 17,
"isAnswer": true,
"answerArray": [
{
"detailContent": "http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg"
}
],
"isSubject": 1
},
{
"id": 0,
"examNumber": 18,
"isAnswer": true,
"answerArray": [
{
"detailContent": "告诉对方"
},
{
"detailContent": "个涉外收电费"
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 0,
"examNumber": 19,
"isAnswer": true,
"answerArray": [
{
"detailContent": "公司发的"
},
{
"detailContent": "公司东方闪电"
}
],
"isRight": 0,
"isSubject": 0
},
{
"id": 1774,
"examNumber": 20,
"isAnswer": true,
"answerArray": [
{
"detailContent": "好改送的非官方的"
},
{
"detailContent": "和是发送到发送到"
}
],
"isRight": 0,
"isSubject": 0
}
]

View File

@@ -0,0 +1,81 @@
{
"result": 1,
"pagination": {
"maxPage": "2057",
"totalDataCount": "4114"
},
"data": [
{
"birthday": "",
"linkPhone": "",
"nation": "01",
"studentCode": "20170001",
"unitiveCode": "20170001",
"sex": "2",
"linkAddress": "",
"identityCard": "",
"accountId": "B4DDF491FDF34074AE7A819E1341CB6C",
"classId": "8c38f49c4362479cad59fdd5966fed04",
"password": "25d55ad283aa400af464c76d713c07ad",
"modifyTime": "20190311152351126",
"isDeleted": "0",
"postalcode": "",
"background": "",
"schoolId": "D23E00EBA6364220A17BBDB92A361ACA",
"studentName": "蓝有城",
"sequenceIntId": "1",
"nativePlace": "",
"id": "2C90488969524E9901696BA2E3D60005",
"username": "s0000000002894659"
},
{
"birthday": "20010421000000",
"linkPhone": "",
"nation": "01",
"studentCode": "16000001310001",
"unitiveCode": "G452226200104219223",
"sex": "2",
"linkAddress": "",
"identityCard": "",
"accountId": "",
"classId": "8dbcc4906abc484a83cc0e1e1f0d91a3",
"password": "",
"modifyTime": "20190327201832000",
"isDeleted": "0",
"postalcode": "546100",
"background": "",
"schoolId": "D23E00EBA6364220A17BBDB92A361ACA",
"studentName": "韦奇秀",
"sequenceIntId": "21",
"nativePlace": "451302",
"id": "2C90488969BD091C0169BEF12988002A",
"username": ""
}
],
"data2": {
"birthday": "",
"linkPhone": "",
"nation": "01",
"studentCode": "20170001",
"unitiveCode": "20170001",
"sex": "2",
"linkAddress": "",
"identityCard": "",
"accountId": "B4DDF491FDF34074AE7A819E1341CB6C",
"classId": "8c38f49c4362479cad59fdd5966fed04",
"password": "25d55ad283aa400af464c76d713c07ad",
"modifyTime": "20190311152351126",
"isDeleted": "0",
"postalcode": "",
"background": "",
"schoolId": "D23E00EBA6364220A17BBDB92A361ACA",
"studentName": "蓝有城",
"sequenceIntId": "1",
"nativePlace": "",
"id": "2C90488969524E9901696BA2E3D60005",
"username": "s0000000002894659"
},
"nextDataUri": "",
"message": "ok",
"dataCount": 2
}

View File

@@ -0,0 +1,115 @@
{
"reportName": "Web自动化_20181104194718",
"failCount": 0,
"finished": true,
"title": "Web自动化",
"totalCount": 1,
"env": {
"cronSuite": "testsuite",
"firefoxDriverPath": "F:\\Eclipse2017Workplace\\MasterYIUITest/src/main/resources/geckodriver.exe",
"mailAccount": {
"charset": "UTF-8",
"debug": false,
"auth": true,
"pass": "q1w2e3",
"socketFactoryFallback": false,
"socketFactoryPort": 465,
"startttlsEnable": false,
"port": 25,
"socketFactoryClass": "javax.net.ssl.SSLSocketFactory",
"host": "smtp.yeah.net",
"splitlongparameters": false,
"from": "hutool@yeah.net",
"user": "hutool"
},
"remoteMode": false,
"hubRemoteUrl": "http://192.168.2.40:4444/wd/hub",
"screenshotFolder": "/screenshot",
"cronEnabled": true,
"cronExpression": "*/2 * * * *",
"elementFolder": "F:\\Eclipse2017Workplace\\MasterYIUITest/config/element/",
"ccs": [""],
"elementLocationRetryCount": 3,
"sqlitePath": "F:\\Eclipse2017Workplace\\MasterYIUITest\\report.db",
"defaultSleepSeconds": 0.5,
"suiteFolder": "F:\\Eclipse2017Workplace\\MasterYIUITest/config/suite/",
"tos": ["309873223@qq.com", "610421185@qq.com", "xuwangcheng14@163.com"],
"ieDriverPath": "F:\\Eclipse2017Workplace\\MasterYIUITest/src/main/resources/IEDriverServer.exe",
"elementLocationTimeouts": 9,
"reportFolder": "F:\\Eclipse2017Workplace\\MasterYIUITest/report",
"operaDriverPath": "F:\\Eclipse2017Workplace\\MasterYIUITest/src/main/resources/operadriver.exe",
"chromeDriverPath": "F:\\Eclipse2017Workplace\\MasterYIUITest/src/main/resources/chromedriver.exe",
"bccs": [""]
},
"browserName": ["chrome"],
"successCount": 1,
"useTime": 11069,
"testTime": "2018-11-04 19:47:07",
"endTime": "2018-11-04 19:47:18",
"skipCount": 0,
"caseReports": [{
"finishTime": "2018-11-04 19:47:18",
"caseName": "百度搜索",
"useTime": "6320",
"runCount": 0,
"caseMethodPath": "com.dcits.test.baidu.usecase.Baidu.search",
"stepReports": [{
"stepName": "打开Url地址",
"stepId": 0,
"testTime": "2018-11-04 19:47:11",
"params": "https://www.baidu.com/",
"actionName": "打开Url地址",
"status": true
}, {
"stepName": "输入 => 搜索框",
"stepId": 1,
"location": "id => kw",
"testTime": "2018-11-04 19:47:12",
"params": "xuwangcheng.com",
"elementName": "搜索框",
"actionName": "输入",
"status": true
}, {
"stepName": "点击 => 搜索按钮",
"stepId": 2,
"location": "id => su",
"testTime": "2018-11-04 19:47:14",
"params": "",
"elementName": "搜索按钮",
"actionName": "点击",
"status": true
}, {
"stepName": "点击 => 搜索结果",
"stepId": 3,
"location": "xpath => //*[@id=\"1\"]/h3/a",
"testTime": "2018-11-04 19:47:15",
"params": "",
"elementName": "搜索结果",
"actionName": "点击",
"status": true
}, {
"stepName": "切换到指定窗口",
"stepId": 4,
"testTime": "2018-11-04 19:47:17",
"params": "1",
"actionName": "切换到指定窗口",
"status": true
}, {
"stepName": "切换到指定窗口",
"stepId": 5,
"testTime": "2018-11-04 19:47:17",
"params": "0",
"actionName": "切换到指定窗口",
"status": true
}, {
"stepName": "刷新页面",
"stepId": 6,
"testTime": "2018-11-04 19:47:17",
"params": "",
"actionName": "刷新页面",
"status": true
}],
"browserType": "chrome",
"status": "success"
}]
}