工具类 根据类生成json测试数据
程序员文章站
2022-06-21 14:45:53
...
package test;
import com.alibaba.fastjson.JSONObject;
import com.inspur.est.mva.uum.generateinfo.data.UumFileTaskDetail;
import com.inspur.est.umc.utils.DateUtils;
import org.junit.Test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
/**
* @author: noob
* @description :用来生成实体类的json数据
* @Date : 15:29 2019/06/20
*/
public class 生成测试数据 {
private HashMap parammap = new HashMap();
private Class clazz;
//初始化参数
public 生成测试数据() {
parammap.put(String.class, "test");
parammap.put(Integer.class, DateUtils.getNowSecond());
parammap.put(int.class, DateUtils.getNowSecond());
parammap.put(long.class, DateUtils.getNowSecond());
parammap.put(Long.class, DateUtils.getNowMillis());
parammap.put(Double.class, 123D);
parammap.put(double.class, 123D);
clazz = UumFileTaskDetail.class;
}
@Test
public void test() throws Exception {
test(clazz);
}
public <T> T getValue(Class<T> clazz) {
return (T) parammap.get(clazz);
// String key = clazz.getCanonicalName().substring(clazz.getCanonicalName().lastIndexOf(".") + 1);
}
public <T> T test(Class<T> clazz) throws Exception {
T demo = clazz.newInstance();
Field[] f = clazz.getDeclaredFields();
for (int i = 0; i < f.length; i++) {
//获取属相名
String attributeName = f[i].getName();
String type = f[i].getType().getName();
//将属性名的首字母变为大写,为执行set/get方法做准备
String methodName = attributeName.substring(0, 1).toUpperCase() + attributeName.substring(1);
try {
//获取Test类当前属性的setXXX方法(私有和公有方法)
Method setMethod = clazz.getMethod("set" + methodName, Class.forName(type));
//获取Test类当前属性的setXXX方法(只能获取公有方法)
//执行该set方法
// setMethod.invoke(demo, getValue(Class.forName(type)));
setMethod.invoke(demo, Class.forName(type).cast(parammap.get(Class.forName(type))));
} catch (NullPointerException nu) {
// System.out.println(MessageFormat.format("本处{0}类型没有值", type));
System.out.println(String.format("本处%s类型没有值", type));
} catch (NoSuchMethodException e) {
continue;
}
}
System.out.println(JSONObject.toJSONString(demo));
return demo;
}
}
上一篇: 方法